C程序在不同的编译器上给出不同的输出
我运行了一个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
是真的依赖编译器还是依赖于操作系统?
函数调用中的参数从左到右被压入堆栈。 评估是从堆栈弹出。 并且评估是从右到左,因此结果。
您不能依赖于副作用的执行顺序来执行函数的参数。 在这种情况下,2个编译器以不同的顺序执行副作用,产生不同的结果。