c语言gcc编译器中前后增量的意外行为

时间:2017-05-12 10:37:40

标签: c output increment post-increment pre-increment

如果n的值为5,则输出:

printf("%d %d", n++, ++n); //should be 5 and 7

但我得到输出6和7。

2 个答案:

答案 0 :(得分:1)

多次未经测序的修改会导致此类未定义行为。如果你搜索它会有很多结果,例如这question

下次编译并启用所有警告,如下所示:

1.0-SNAPSHOT

答案 1 :(得分:0)

printf()调用undefined-behavior。 请查看Undefined Behavior and Sequence Points

在函数调用参数列表中修改变量值两次或更多次并不是一个好习惯