当我在VS 2013 / Win64 / Release中尝试此代码时,我得到了错误的结果:它打印1 1.
在Visual 2013 Win32 / Debug / Release& Win64 / Debug,结果是正确的.
Visual Studio项目是使用默认参数创建的.
#include <iostream>
int main(int argc, char* argv[])
{
long long inc[2] = { 0, 1 };
long long dinc[2] = { 0, 0 };
dinc[0] = inc[1] - inc[0];
dinc[1] = inc[0] - inc[1]; //expected -1 ==> display 1
for (int i = 0; i < 2; ++i)
std::cout << i << "\t" << dinc[i] << "\n";
return 0;
}
如何解释这个结果?
最佳答案 在x64的发布模式下禁用项目优化
右键单击Project – > Properties – > C/C++ – > Optimization – > Disabled
属性窗口左上角的配置应设置为Release
右上角的平台应设置为x64
编辑:
在中间有一个临时变量来持有inc [0] – inc [1]
long long total = 0;
total = inc[0] - inc[1];
dinc[1] = total;
无论其价值如何,都会使用Optimization Enabled打印正确的值