int fun1(int& num)
{
if(num)
num += 100;
}
int fun2(int& num)
{
if(!num)
num -= 100;
}
int main()
{
int num = 0;
int num1 = fun1(num) + fun2(num);
//debug下調用函數順序爲先fun1後fun2,最終num1=-100
//release下調用順序爲先fun2後fun1,最終num1=0
//不通編譯器優化執行方向不同,返回結果不通,多模算法都可能出現類似問題,不推薦上述方法執行函數
//根據需求執行即可,類似如下:
// num1 = fun1(num);
// num1 += fun2(num);
return 0;
}
不通編譯器甚至同一編譯器的不同優化都有可能出現類似情況