while循环中自增运算符执行逻辑的技术问询
解析while循环中
n++的执行逻辑 先把你的代码贴出来方便分析:
#include <stdio.h> #define TEN 10 int main(void) { int n = 0; while (n++ < TEN) printf("%5d", n); printf("\n"); return 0; }
你的疑问里有个关键误解:printf语句里并没有执行自增操作,所有的自增都只发生在while循环的条件判断中。我们一步步拆解执行过程:
- 初始状态:
n = 0 - 第一次进入while条件判断:
n++ < TEN- 这里的
n++是后置自增运算符,规则是:先使用变量当前的值进行比较运算,运算完成后再把变量的值加1 - 所以先拿
n=0和TEN=10比较,0 < 10成立,然后n的值被加1,变成1 - 进入循环体,执行
printf("%5d", n),此时n是1,所以第一次输出1(占5个字符宽度)
- 这里的
- 第二次循环条件判断:
n++ < 10- 当前n是1,先拿1和10比较,成立,n变成2
- 循环体输出
2
- 重复这个过程,直到:
- 当n=9时,条件判断
9++ <10:先比较9<10成立,n变成10,循环体输出10
- 当n=9时,条件判断
- 下一次条件判断:
n++ <10- 当前n是10,先比较10<10,不成立,然后n变成11,循环终止
- 最后执行
printf("\n"),输出换行
所以这段代码最终的输出是从1到10的数字,每个数字占5个字符宽度,核心是要区分后置自增运算符的执行顺序:先取值运算,再自增。
内容的提问来源于stack exchange,提问作者duckkkk
相关产品推荐
相关产品推荐

