当我在VS 2013/Win64/Release中尝试使用此代码时,出现错误结果:它会打印1 1
。long long VS 2013 Release Win 64错误结果
在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;
}
这个结果怎么解释?在属性窗口的左上角为Release
模式项目
查看是否开启了优化的发布模式。 '用鼠标右键单击项目 - >属性 - > C/C++ - >优化 - >“优化”选项 – BackDoorNoBaby
我刚刚运行该代码与'优化'禁用,并得到了正确的结果 – BackDoorNoBaby
我可以重现此本地。似乎优化器以某种方式混乱... – Angew