【发布时间】:2011-06-10 00:33:43
【问题描述】:
以下 for 循环产生相同的结果,即使一个使用后增量,另一个使用前增量。
代码如下:
for(i=0; i<5; i++) {
printf("%d", i);
}
for(i=0; i<5; ++i) {
printf("%d", i);
}
对于两个“for”循环,我得到相同的输出。我错过了什么吗?
【问题讨论】:
-
我查看了几个链接,但找不到我想要的答案。简短的回答是“序列点”。部分引用 C11 草案,附件 C 序列点:“- 在完整表达式的评估和要评估的下一个完整表达式之间。以下是完整表达式:...... for 语句的每个(可选)表达式( 6.8.5.3);return 语句 (6.8.6.4) 中的(可选)表达式。”。这意味着在每个表达式之后都有 for 循环中的序列点。因此,在 for 循环的第三个表达式中执行 ++i 或 i++ 或 i+=1 或 i=i+1 都没有关系。
标签: c++ c for-loop operator-precedence