我运行了一个C程序,并在不同的C编译器上获得了不同的输出。下边是 我的程序
void main()
{
int i=5;
printf("%d%d%d%d%d",i++,i--,++i,--i,i);
}
ON boarnland c ++ complier o / p是
45545
和gcc上的
45555
它真的依赖编译器还是依赖于操作系统?
函数调用中的参数从左到右被压入堆栈。评估是从堆栈弹出。并且评估是从右到左,因此结果。
答案 0 :(得分:5)
您不能依赖于对函数参数执行副作用的顺序。在这种情况下,2个编译器以不同的顺序执行副作用,产生不同的结果。