Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C程序在不同的编译器上给出不同的输出_C_Gcc_Turbo C++ - Fatal编程技术网

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

C程序在不同的编译器上给出不同的输出,c,gcc,turbo-c++,C,Gcc,Turbo C++,我运行了一个C程序,在不同的C编译器上得到了不同的输出。下面是 我的节目 void main() { int i=5; printf("%d%d%d%d%d",i++,i--,++i,--i,i); } < C++ >编译器的O/P

我运行了一个C程序,在不同的C编译器上得到了不同的输出。下面是 我的节目

void main()
{
    int i=5;
     printf("%d%d%d%d%d",i++,i--,++i,--i,i);
}
< C++ >编译器的O/P <

45545

关于gcc及其

45555

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


函数调用中的参数从左到右推入堆栈。通过从堆栈中弹出来进行计算。并且计算是从右到左的,因此是结果。

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

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

似乎不是操作系统。我会说是编译器。像这样把不同操作的效果和副作用结合在一个简洁的代码行中,会使你的代码很难阅读,IMNSHO。我会避免它的可读性。(我只使用了++,而且——在一些成熟的习惯用法中,如for循环或单机版)似乎不是操作系统。我会说是编译器。像这样把不同操作的效果和副作用结合在一个简洁的代码行中,会使你的代码很难阅读,IMNSHO。我会避免它的可读性。(我只使用++和-,在循环或单机等公认的习惯用法中)谢谢@qbert,但我真的不知道副作用,我想读一下副作用…我在哪里可以读到它?在2编译器中执行的顺序是什么??@AMIT:“+”和“-”会引起副作用。这些是在使用表达式的值之后发生的事情。i++意味着取i的值,然后增加i。在这种情况下,i的增加被称为副作用。谢谢@qbert,但我真的不知道副作用,我想读一下副作用…我在哪里可以读到它?在2 compliler中执行的顺序是什么?@AMIT:“+”和“-”可以引起副作用。这些是在使用表达式的值之后发生的事情。i++意味着取i的值,然后增加i。在这种情况下,i的增加称为副作用。