我想知道为什么这段代码在不同的编译器上显示不同的输出。 这是代码: -
int a = 5;
printf("%d %d",a++,++a);
输出: - 6 7(Visual Studio)
输出: - 6 6(CodeBlocks)
答案 0 :(得分:3)
这是未定义的行为,它取决于您使用的编译器。并且添加它与优先顺序无关。
您可以查看Precedence and Order of Evaluation
同样来自C99标准:
未指定操作数的评估顺序。如果尝试 用于修改赋值运算符的结果或访问它 在下一个序列点之后,行为未定义。