大学刚刚学习C语言时,只知道break就是switch的搭档,switch中遇到break,就结束跳出。后来开始工作,接触到的优秀的开源代码越来多发现break除了与swich配合使用外还有很多巧妙地用法。
其中用到最多的,也是最容易迷惑的就是break与while、for等循环结合使用的情况。
在while、for 循环中遇到关键字break时,循环会终止运行并且跳出继续执行循环语句后面的代码。break 关键字通常和 if 语句一起使用,即满足条件时便跳出循环。
使用 while 循环计算1加到50的值:
#include <stdio.h>
int main(){
int j=1, sum=0;
while(1){ //循环条件为死循环
sum+=j;
j++;
if(j>50) break;
}
printf("%d\n", sum);
return 0;
}
运行结果:
1275
while 循环条件为 1,是一个死循环。当执行到第50次循环的时候,计算完j++;后 j 的值为 1275,此时 if 语句的条件 i> 50 成立,执行break;语句,结束循环。
在多层循环中,一个 break 语句只向外跳一层。例如,输出一个4*4的整数矩阵:
#include <stdio.h>
int main(){
int i=1, j;
while(1){ // 外层循环
j=1;
while(1){ // 内层循环
printf("%-4d", i*j);
j++;
if(j>4) break; //跳出内层循环
}
printf("\n");
i++;
if(i>4) break; // 跳出外层循环
}
return 0;
}
运行结果:
1 2 3 4
2 4 6 8
3 6 9 12
4 8 12 16
当 j>4 成立时,执行break;,跳出内层循环;外层循环依然执行,直到 i>4 成立,跳出外层循环。内层循环共执行了4次,外层循环共执行了1次。