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个编译器以不同的顺序执行副作用,产生不同的结果。