在循环执行的过程中,如果发生某些状况的时候,需要提前终止循环,这是非常常见的现象。C语言提供了break和continue两个关键字,就是应用到循环中的。
下面进行一一举例说明:
#include<stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
if (i == 5)
break;//当i=5后,就执行break,循环就终止了
printf("%d ", i);
i = i + 1;
}
return 0;
}
运行结果:
打印了1 2 3 4后,当i等于5时,循环在break的地方终于,不在打印,不再循环。
所以break的作用就是永久终止循环,只有break被执行,break外的第一层循环就终止了。
continue是继续的意思,在循环中的作用就是跳过本次循环continue后面的代码,继续进行下一次循环的判断。
上面的代码,如果把break换成continue会是什么结果呢?
#include<stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
if (i == 5)
continue;
//当i=5后,就执行continue,直接跳过continued代码,去循环的判断的地方
//因为这里跳过了i=i+;所以i一直等于5,程序陷入死循环
printf("%d ", i);
i++;
}
return 0;
}
运行结果:程序陷入死循环
但不是while循环中的所有continue都会造成死循环。接下来,我们调换一下i++(循环的调整)的位置,就会得到不同的效果:
#include<stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
i++;//i进入循环后加1,等于2,跳过1,打印2
if (i == 5)
continue;//当i等于5时,跳过后面的代码,进入判断条件,后加1,i=6
printf("%d ", i);//当打印10后,进入判断语句,为真,继续循环,打印11
}
return 0;
}
运行结果:
到这里我们就能分析出来,continue可以帮助我们跳过某一次continue后边的代码,直接到循环的判断部分,进行下一次循环的判断,如果循环的调整是在continue后边的话,可能会造成死循环。
(循环详解:后期会出)
和while循环中的break一样,for循环中的break也用于彻底终止循环。
#include<stdio.h>
int main()
{
int i = 1;
for (i = 1; i <= 10; i++)
{
if (i == 5)
break;
printf("%d ", i);
}
return 0;
}
运行结果:
同样,把上述代码中的break替换成continue
#include<stdio.h>
int main()
{
int i = 1;
for (i = 1; i <= 10; i++)
{
if (i == 5)
continue;//这里continue跳过后边的打印,来到i++的调整部分
printf("%d ", i);
}
return 0;
}
运行结果:
这就相当于while循环continue的第二个例子
练习: 程序的输出结果是?
#include <stdio.h>
int main()
{
int a = 0, b = 0;
for (a = 1, b = 1; a <= 100; a++)
{
if (b >= 20) break;
if (b % 3 == 1)
{
b = b + 3;
continue;
}
b = b-5;
}
printf("%d\n", a);
return 0;
}
答案:8
do while语句中的break和continue的作用和while循环中的几乎一模一样。
#include<stdio.h>
int main()
{
int i = 1;
do
{
if (i == 5)
break;
printf("%d ", i);
i = i + 1;
} while (i <= 10);
return 0;
}
运行结果:
#include<stdio.h>
int main()
{
int i = 1;
do
{
if (i == 5)
continue;
printf("%d ", i);
i = i + 1;
} while (i <= 10);
return 0;
}
运行结果:(死循环)
欢迎斧正!!!
(期待)