前面介绍过了分支语句和循环语句,本次主要对循环语句中常用的语句进行补充。
目录
一、break语句和continue
1.break语句
break的作用是永久的终止循环 ,只要break被执行,就直接跳出循环,继续往后执行。
2.break语句举例
(1)while中的break
#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;
}
第一次循环:i=1 打印 1 i=2;
第二次循环:i=2 打印 2 i=3;
第三次循环:i=3 打印 3 i=4;
第四次循环:i=4 打印 4 i=5;
观察:在进行while循环时,第四次循环结束之后 i=5, 符合表达式“ i == 5”,执行break,结束循环。
注意:break只能跳出一层循环
(2) for中的break
#include <stdio.h>
int main()
{
int i = 1;
for (i = 1; i <= 10; i++)
{
if (i == 5)
break;//i=5时,执行break语句,跳出for循环
printf("%d ", i);
}
return 0;
}
(3)do...while中的break
#include <stdio.h>
int main()
{
int i = 1;
do
{
if (i == 5)
break;
printf("%d ", i);
i = i + 1;
} while (i <= 10);
return 0;
}
通过观察我们可以看到在for语句和do...while语句中break的使用方式基本一致,均能够在符合条件时跳出循环。但不论在哪种语句中,break均只能跳出一层循环。
3.continue语句
continue的作用是跳过本次循环位于continue后面的代码。
4.continue语句举例
(1)while中的continue
#include <stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
if (i == 5)
continue;//当i等于5后,就执⾏continue,直接跳过continue的代码,去循环的判断的地⽅
printf("%d ", i);
i = i + 1;
}
return 0;
}
可以观察到continue使循环跳过了i+1,使循环整体变成死循环
(2) for中的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;
}
当i=5时,for语句中执行continue跳过对5的打印直接再次进入i++的循环中
(3) do...while中的continue
#include <stdio.h>
int main()
{
int i = 1;
do
{
if (i == 5)
continue;
printf("%d ", i);
i = i + 1;
} while (i <= 10);
return 0;
}
在do...while中的continue和while中的几乎一样,可能会导致程序进入死循环。
二、goto语句
前面讲过每一个break只能跳出一层循环,当出现循环的嵌套时要跳出多个循环就需要多个break;而此时,使用goto语句可以更快捷地跳出循环。
例如:
for (...)
{
for (...)
{
for (...)
{
if (disaster)
goto error;
}
}
}
error:
使用了goto语句可以直接跳转到error处,继续执行error后的语句。
此时如果想要跳出所有循环就需要使用三个break,在这种情况下如果使用goto语句可以更快捷。
注意:
如果goto语句使用不当 会导致在函数内部任意跳转,打乱程序的执行流程,所以对于goto语句的建议是能不使用尽量不使用