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

标签 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++ 编译器 o/p 是

45545

在 gcc 上它的

45555

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

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

最佳答案

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

关于C程序在不同的编译器上给出不同的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5115628/

相关文章:

c - 使用浮点二进制格式的变量如何存储值 0.0

c++ - C 中的 const 与 C++ 中的 const

c - 如何锁定 SQLite 数据库?

c++ - Turbo C++ 程序卡住

c - AND 运算符应用于链表中的指针时是什么意思?

gcc - 我如何编译*不*启用各种指令集?

c - 基于 GCC 的 SIGSEGV 错误?

c++ - 包含头文件时,路径是否区分大小写?

c++ - 在找到总计并将其插入C++文件中的同时获取垃圾值

c - getch() 将回车等同于 esc 键