break和continue的区别:
1. 当它们用在循环语句的循环体时,break用于立即退出本层循环,而continue仅仅结束本次循环(本次循环体内不执行continue语句后的其它语句,但下一次循环还会继续执行。
2. 如果有多层循环时,break只会跳出本层循环,不会跳出其他层的循环。
3. break可用于switch语句,表示跳出整个switch语句块,而continue则不能单独的用于switch语句。但是continue可以用于循环内部的switch语句。
4. break和continue语句在循环内的switch语句中使用时,是有区别的。在这种情况下的break是指跳出switch语句块(switch语句块的代码仍然执行)。而这种情况下的continue是指结束本次循环(不在执行switch后面的代码),进行下一次循环。
例1:
#include <stdio.h> int main(void) { int i; for (i=0; i<5; i++) { if (i == 2) { break; printf("没有执行这里!\n"); } printf("i=%d\n", i); } printf("已经跳出循环\n"); return 0; }
编译执行:
kevin@kevin-virtual-machine:~/Documents/Test/C/break_continue$ ./break
i=0 i=1 已经跳出循环
因为break语句直接结束了本层的循环, 直接执行循环后边的语句。
例2:
#include <stdio.h> int main(void) { int i; for (i=0; i<5; i++) { if (i == 2) { continue; printf("没有执行这里!\n"); } printf("i=%d\n", i); } printf("循环结束!\n"); return 0; }
编译执行:
kevin@kevin-virtual-machine:~/Documents/Test/C/break_continue$ ./continue i=0 i=1 i=3 i=4 循环结束!
continue 只是结束了当前一次循环,之后继续了下一次循环。
例3:
#include <stdio.h> int main(void) { int a, b; for (a=0; a<5; a++) { for (b=0; b<5; b++) { if(b == 2) { break; printf("没有执行这里!\n"); } printf("b=%d\n", b); } printf("a=%d\n", a); } printf("循环结束!\n"); return 0; }
编译输出:
kevin@kevin-virtual-machine:~/Documents/Test/C/break_continue$ ./break2 b=0 b=1 a=0 b=0 b=1 a=1 b=0 b=1 a=2 b=0 b=1 a=3 b=0 b=1 a=4 循环结束!
例3是一个两层for循环,break语句只会跳出最近的一层循环,第二层for循环继续执行
例4:
#include <stdio.h> int main(void) { int i; for (i=0; i<2; i++) { int j = 5; switch(j) { case 4: printf("你好 %d !!!\n", 4); break; case 5: printf("你好 %d !!!\n", 5); break; case 6: printf("你好 %d !!!\n", 6); break; } printf("Hello World!\n"); } printf("结束循环!\n"); }
编译输出:
kevin@kevin-virtual-machine:~/Documents/Test/C/break_continue$ ./switch_break 你好 5 !!! Hello World! 你好 5 !!! Hello World! 结束循环!
例4中break的作用只会跳出 switch() 语句块,执行swith语句块后面的程序printf("Hello World!\n");而不是跳出循环。
例5:
#include <stdio.h> int main(void) { int i; for (i=0; i<2; i++) { int j = 5; switch(j) { case 4: printf("你好 %d !!!\n", 4); continue; case 5: printf("你好 %d !!!\n", 5); continue; case 6: printf("你好 %d !!!\n", 6); continue; } printf("Hello World!\n"); } printf("结束循环!\n"); }
编译输出:
kevin@kevin-virtual-machine:~/Documents/Test/C/break_continue$ ./switch_continue
你好 5 !!! 你好 5 !!! 结束循环!
例5中循环内部的switch语句中的continue是直接结束本次循环,switch语句块后面的printf("Hello World!\n");将不会被执行。