Эта программа написана на 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;
Переменная testval равна -2500000000 (1001 0101 0000 0010 1111 1001 0000 0000 двоичный).
Есть идеи?
Спасибо.