给定C代码中do while循环内continue语句执行后的控制流向问询
关于C语言do-while循环中continue语句的控制流问题
先来看你提供的这段C代码:
#include <stdlib.h> #include <stdio.h> enum {false, true}; int main() { int i = 1; do { printf("%d\n", i); i++; if (i < 15) continue; } while (false); getchar(); return 0; }
咱们一步步捋清楚执行流程,重点说continue的行为:
- 程序启动后,
i被初始化为1。因为是do-while循环,它的特性是先执行一次循环体内容,再判断循环条件,所以首先会打印出1,接着i自增为2。 - 接下来进入
if (i < 15)的判断:此时i=2,满足条件,于是触发continue语句。 - 在C语言中,
continue的核心作用是:跳过当前循环体中continue之后的所有剩余代码,直接跳转到循环的条件判断环节。
放到这个do-while场景里,执行continue后,程序会立刻跳到while(false)这个条件检查的位置,不会再执行循环体里continue之后的任何代码(不过这段代码里continue后面已经没有其他代码了)。 - 因为
while的条件是false,条件不成立,循环直接终止。 - 最后程序执行
getchar()等待用户输入,然后返回0结束运行。
额外补充:哪怕i的值后来增长到15或更大,不会触发continue,循环体执行完毕后还是会走到while(false)的判断,循环依然会终止——毕竟这个do-while的终止条件从一开始就是固定为假的,本质上只会执行一次循环体。
内容的提问来源于stack exchange,提问作者user13027222
相关产品推荐
相关产品推荐

