Эта программа написана на 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 двоичное).
Есть идеи? Спасибо.