C语言中continue语句的正确放置位置?代码执行异常求助
问题排查与修复:continue语句导致的死循环
问题根源
当程序运行到a=2且b=2时,continue语句直接跳转到内层while循环的开头,跳过了b++语句。此时b的值始终停留在2,内层while的条件b<=3永远成立,程序陷入死循环,无法继续输出后续内容。
修复方案
核心是确保无论是否触发continue,b都能正常递增,打破死循环。这里提供两种可行的修复方式:
方式1:调整b++的执行顺序
把b++移到判断逻辑之前,保证每次循环都先更新b的值:
#include <stdio.h> int main(){ int a=1,b=1; while(a<=3) { b=1; while(b<=3) { b++; if(a==2&&b==2) continue; printf("%d%d ",a,b-1); } a++; } return 0; }
方式2:在continue前手动递增b
在触发continue的分支里先执行b++,避免b值卡住:
#include <stdio.h> int main(){ int a=1,b=1; while(a<=3) { b=1; while(b<=3) { if(a==2&&b==2) { b++; continue; } printf("%d%d ",a,b); b++; } a++; } return 0; }
验证结果
修复后的代码会输出预期内容:11 12 13 21 23 31 32 33
内容的提问来源于stack exchange,提问作者Razaq
相关产品推荐
相关产品推荐

