2012-04-04 6 views
0
int64_t maskTestNum = (1ll << 63); 

Может кто-нибудь объяснить, почему это печатает как значение ниже?странный результат смещения бит

-9223372036854775808

Я думаю, что абсолютное значение правильно, но почему минус?

+3

Эт, это подписанное число, и вы перешли в бит знака? –

+0

OK, ta ... не знал о подписанном бите, но имеет смысл. – Remover

ответ

2

Вместо этого используйте целое число без знака: uint64_t.

Смежные вопросы