Почему я не могу напрямую установить для переменной __int64 значение -2500000000?

Эта программа написана на VC ++ 6.0 на машине WindowsXP.

Если я попытаюсь установить для переменной __int64 значение -2500000000 напрямую, оно будет усечено до 32-битного значения и будет взято дополнение до двух.

__int64 testval;
testval = -2500000000;

На этом этапе testval равно 1794967293 (110 1010 1111 1101 0000 0111 0000 0000 двоичный) .

Когда я устанавливаю переменную на 2500000000, а затем умножаю ее на отрицательное, это работает:

__int64 testval;
testval = 2500000000;
testval *= -1;

Тестовое значение переменной равно -2500000000 (1001 0101 0000 0010 1111 1001 0000 0000 двоичное).

Есть идеи? Спасибо.

6
задан andand 18 February 2011 в 21:14
поделиться