该程序是在 WindowsXP 机器上用 VC++ 6.0 编写的。
如果我尝试将 __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 二进制)。
有任何想法吗?谢谢。