<分区>
我运行了一个 C 程序,在不同的 C 编译器上得到了不同的输出。下边是 我的程序
void main()
{
int i=5;
printf("%d%d%d%d%d",i++,i--,++i,--i,i);
}
ON boarnland c++ 编译器 o/p 是
45545
在 gcc 上它的
45555
它真的依赖于编译器还是依赖于操作系统?
函数调用中的参数从左到右压入堆栈。评估是通过从堆栈中弹出。并且评估是从右到左的,因此是结果。
<分区>
我运行了一个 C 程序,在不同的 C 编译器上得到了不同的输出。下边是 我的程序
void main()
{
int i=5;
printf("%d%d%d%d%d",i++,i--,++i,--i,i);
}
ON boarnland c++ 编译器 o/p 是
45545
在 gcc 上它的
45555
它真的依赖于编译器还是依赖于操作系统?
函数调用中的参数从左到右压入堆栈。评估是通过从堆栈中弹出。并且评估是从右到左的,因此是结果。
最佳答案
您不能依赖函数参数的副作用的执行顺序。在这种情况下,2 个编译器以不同的顺序执行副作用,产生不同的结果。
关于C程序在不同的编译器上给出不同的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5115628/