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/