このプログラムは、WindowsXPマシンのVC++6.0で記述されています。
__int64変数を-2500000000に直接設定しようとすると、32ビット値に切り捨てられ、2の補数が取得されます。
__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バイナリ)に等しくなります。
何か案は?ありがとう。