當我在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