首先:break只能用在循环语句中,而break可以用在循环和语句中,两者都是辅助循环; 不过,如果该语句位于循环中,则可以将其用作该语句的一部分; 在这种情况下,就像在其他循环中一样,让程序跳出循环的其余部分,包括语句的其余部分。
一般来说,程序进入循环后,循环体内的所有语句都会在下一次循环测试之前执行。 语句可以根据循环体内的测试结果忽略部分循环内容甚至结束循环。
C语言中的循环语句共有三种类型: while(); 执行 while(); 为了; 所有三种类型的循环都可以使用break语句。
对于语句,当执行该语句时,将跳过本次迭代的剩余部分,开始下一轮迭代; 但是,如果该语句位于嵌套循环内部,则只会影响包含该语句(即该语句)的内层循环(即内循环后面的语句不会被执行,而是跳出该循环后)内循环,外循环内的语句将正常执行。);
但是,对于 while() 和 do while() 循环,执行语句后的下一个操作是评估循环的测试表达式,请参阅代码示例:
#include
int main() {
//while()
char CH;
int count=0;
while(count < 10){
CH = getchar();
if(CH != ' ')
continue;
putchar(CH);
count++;
}
printf("Hello, World!\n");
return 0;
}
对于 for 循环,执行后的下一个操作是评估更新表达式,然后评估循环测试表达式。 以下代码示例涵盖了嵌套循环中使用的情况:
#include
int main() {
char ch;
int cunt;
int i;
for(cunt=0;cunt<10;cunt++){
ch = getchar();
for(i=0;i<5;i++){
if (ch != ' ')
continue;
putchar(ch);
printf("我是内层循环的---小可爱!!!\n");
}
printf("我是外层循环的---小可爱!!!\n");
printf("如果continue语句在嵌套循环内,则只会影响包含continue的内层循环,不影响外层循环!!!\n");
}
printf("Hello, World!\n");
return 0;
}
对于中断语句:
当程序在循环中执行break语句时,将终止包含它的循环并继续执行下一阶段; 如果break位于嵌套循环内部,它只影响包含它的当前循环。
对比一下break和程序执行的区别,见下图:
:
跳出本次循环,执行下一个循环。
休息:
break 跳出整个循环
让我们看一下示例代码:
#include
int main() {
//while()
char CH;
int count=0;
while(count < 10){
CH = getchar();
if(CH != ' ')
break;
putchar(CH);
count++;
}
printf("Hello, World!\n");
return 0;
}
for 循环和嵌套循环的示例:
注意:只会直接跳出内循环,外循环会正常执行。
#include
int main() {
char ch;
int cunt;
int i;
for(cunt=0;cunt<10;cunt++){
ch = getchar();
for(i=0;i<5;i++){
if (ch != ' ')
break;
putchar(ch);
printf("我是内层循环的---小可爱!!!\n");
}
printf("我是外层循环的---小可爱!!!\n");
printf("如果continue语句在嵌套循环内,则只会影响包含continue的内层循环,不影响外层循环!!!\n");
}
printf("Hello, World!\n");
return 0;
}
如果想让外层循环同时终止,需要在外层使用break;
#include
int main() {
char ch;
int cunt;
int i;
for(cunt=0;cunt<10;cunt++){
ch = getchar();
for(i=0;i<5;i++){
if (ch != ' ')
break;
putchar(ch);
printf("我是内层循环的---小可爱!!!\n");
}
if (ch != ' ')
break;
printf("我是外层循环的---小可爱!!!\n");
printf("如果continue语句在嵌套循环内,则只会影响包含continue的内层循环,不影响外层循环!!!\n");
}
printf("Hello, World!\n");
return 0;
}
在多重选择语句中使用和break的示例:
/* animals.c -- uses a switch statement */
#include
#include
int main(void)
{
char ch;
printf("Give me a letter of the alphabet, and I will give ");
printf("an animal name\nbeginning with that letter.\n");
printf("Please type in a letter; type # to end my act.\n");
while ((ch = getchar()) != '#')
{
if('\n' == ch)
continue;
if (islower(ch)) /* lowercase only */
switch (ch)
{
case 'a' :
printf("argali, a wild sheep of Asia\n");
break;
case 'b' :
printf("babirusa, a wild pig of Malay\n");
break;
case 'c' :
printf("coati, racoonlike mammal\n");
break;
case 'd' :
printf("desman, aquatic, molelike critter\n");
break;
case 'e' :
printf("echidna, the spiny anteater\n");
break;
case 'f' :
printf("fisher, brownish marten\n");
break;
default :
printf("That's a stumper!\n");
} /* end of switch */
else
printf("I recognize only lowercase letters.\n");
while (getchar() != '\n')
continue; /* skip rest of input line */
printf("Please type another letter or a #.\n");
} /* while loop end */
printf("Bye!\n");
return 0;
}
本例中的功能与上面类似,但break的功能不同:它允许程序离开该语句,跳转到该语句之后的下一条语句; 如果没有break语句,则从匹配的标签处开始执行到末尾;
注意:C语言中的case一般指定一个值,不能使用范围; 括号内的测试表达式的值应该是整数值(包括char类型); case 标签必须是整型(包括 char 类型)常量或整型常量表达式(即表达式仅包含整型常量)。不能使用变量作为 case 标签
有一个休息时间
遇到break后跳出继续匹配。
没有休息
按顺序执行每个案例。