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;
}
不通编译器甚至同一编译器的不同优化都有可能出现类似情况