C语言for循环中break语句未生效的原因咨询
问题分析与解决
你的代码里break不生效的核心原因,是**++i和if(i==18)的执行顺序搞反了**,我们拆解关键执行步骤就能看明白:
关键流程拆解
当循环走到i=18时:
- 满足
for循环的i<25条件,进入循环,先打印出18 - 执行
++i,此时i直接变成了19 - 再判断
if(i==18)——这时候i是19,条件不成立,自然不会触发break - 循环结束时执行
for里的i++,i变成20,继续下一轮循环,直到i增长到26才退出循环
修复方案
如果想保留++i,可以调整代码顺序,先判断再自增:
#include <stdio.h> int main() { int i; for (i = 0; i < 25; i++) { printf("the number we get is %d\n\n", i); if (i == 18) // 先检查当前打印的数值是否为18 { break; } ++i; // 再执行自增操作 } return 0; }
当然更简洁的写法是直接在for循环里定义步长,避免循环体里的额外自增,逻辑更清晰:
#include <stdio.h> int main() { int i; // 直接设置步长为2,终止条件设为i<=18,一步到位 for (i = 0; i <= 18; i += 2) { printf("the number we get is %d\n\n", i); } return 0; }
内容的提问来源于stack exchange,提问作者Inception
相关产品推荐
相关产品推荐

