c - Turbo C 编译器和 Visual Studio 2012 中同一 C 程序的不同输出

标签 c visual-studio visual-c++ data-structures turbo-c

main()
{
    int a=10;
    printf("%d\t%d\t%d\t%d",++a,--a,a--,a++);
    getchar();
    return 0;
}

在 Visual Studio 2012 中运行此程序时,我得到输出:10 10 11 10。

在 Turbo C 中运行此程序时,我得到输出:10 9 11 10

从参数从右向左扫描、评估并放入堆栈的角度来看,第二个输出(Turbo C)似乎是正确的。

但我确信 Visual Studio 的输出也不会错。那么,为什么输出会出现这种差异呢?

最佳答案

未定义参数的计算顺序,即编译器可以按任何顺序(根据标准)计算它们。

关于c - Turbo C 编译器和 Visual Studio 2012 中同一 C 程序的不同输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26285662/

相关文章:

visual-studio - 将 tinyxml2 与 Visual Studio、Visual C++ MFC 应用程序一起使用

c - 用乘法表填充二维数组

python - 错误 : expected declaration specifiers or '...' before string constant

visual-studio - VS 2013 Express for Desktop 无法打开 vcxproj 项目文件

.net - 调试 Visual Studio 2017 扩展未找到程序集

c - C++ 枚举类型转换为整数类型后符号不正确

c - 如何初始化 LCD 的 4 位操作

c - char16_t 和 char32_t 到底是什么,我在哪里可以找到它们?

c++ - 如何设置 VS2008 以进行高效的 C++ 开发

C++ MFC 应用程序在 Windows 7 上运行缓慢,但在 XP 上运行迅速