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

时间:2011-02-25 09:35:18

标签: c gcc turbo-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

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

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

1 个答案:

答案 0 :(得分:5)

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