C程序在不同的编译器上给出不同的输出

Ami*_*mar 1 c gcc turbo-c++

我运行了一个C程序,并在不同的C编译器上获得了不同的输出.以下是我的计划

void main()
{
    int i=5;
     printf("%d%d%d%d%d",i++,i--,++i,--i,i);
}
Run Code Online (Sandbox Code Playgroud)

ON boarnland c ++ complier o/p is

45545

并在gcc上

45555

是真的依赖于编译器还是依赖于操作系统?

函数调用中的参数从左到右被压入堆栈.评估是从堆栈弹出.并且评估是从右到左,因此结果.

qbe*_*220 5

您不能依赖于副作用的执行顺序到函数的参数.在这种情况下,2个编译器以不同的顺序执行副作用,产生不同的结果.