为何C语言中x=5时该for循环输出为2 4 6而非2 3 4 5 6?
为什么输入x=5时这段C代码输出是2 4 6而非预期的2 3 4 5 6?
你提供的代码如下:
int x; printf("enter number >"); scanf("%d",&x); for(int i=1;i<=x;i++) { i=i+1; printf("%d ",i); }
问题核心是你忽略了for循环的完整执行逻辑:每次循环体执行完毕后,for循环会自动执行增量表达式i++,再加上你在循环体内手动修改i=i+1,相当于每次循环i的实际增量是2,而非你预想的1。
输入x=5时的完整执行步骤:
- 初始化
i=1,判断1<=5成立,进入循环体- 执行
i=i+1,i变为2,打印2 - 循环体结束,执行for的增量操作
i++,i变为3
- 执行
- 判断
3<=5成立,进入循环体- 执行
i=i+1,i变为4,打印4 - 循环体结束,执行
i++,i变为5
- 执行
- 判断
5<=5成立,进入循环体- 执行
i=i+1,i变为6,打印6 - 循环体结束,执行
i++,i变为7
- 执行
- 判断
7<=5不成立,循环终止
最终输出自然是2 4 6。
内容的提问来源于stack exchange,提问作者opiasss
相关产品推荐
相关产品推荐

