[技术问答] c语言中break和continue的用法和区别

[复制链接]
 楼主| vivilyly 发表于 2025-5-27 16:05 | 显示全部楼层 |阅读模式
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. //break 代码实例
  2. #include <stdio.h>

  3. int main()
  4. {
  5.     int i = 1;
  6.     while(i<=10)
  7.     {
  8.         if(i==5)
  9.             break;
  10.         printf("%d ",i);
  11.         i = i + 1;
  12.     }
  13.     return 0;
  14. }

此处,代码的输出结果是什么?
正确输出为:1 2 3 4
原因分析:当程序运行到if(i==5) 程序就直接终止,直接 退出当前循环。
总结:在循环中只要遇到break,就停止后期所有的循环,直接终止循环。
测试2:

  1. void test2()
  2. {
  3. int i = 0;
  4. for (i = 0; i < 5; i++)
  5. {
  6. if (i == 2)
  7. {
  8. continue;
  9. printf("我没有被打印出来!\n");
  10. }
  11. printf("i = %d\n", i);
  12. }

test2()的打印结果是 i = 0 i = 1  i = 3  i = 4 i = 2没有被打印,是因为continue 结束了那一次循环,继续了下一次循环
  1. void test3()
  2. {
  3. int i = 0;
  4. int j = 0;
  5. for (i = 0; i < 5; i++)
  6. {
  7. for (j = 0; j < 5; j++)
  8. {
  9. if (j == 2)
  10. {
  11. break;
  12. }
  13. printf("Hello: %d\n", j);

  14. }
test3()是一个两层for循环,break语句只会跳出最近的一层循环, 第二层for循环继续执行在test4()中,break的作用只会跳出 switch()语句块,执行swith语句块后面的程序printf(“Hello World!\n”); 而不是跳出循环。与test5()进行对比,continue是结束本次循环,进行下一次循环, switch()语句块后边的内容不会被打印
  1. */
  2. void test4()
  3. {

  4. int i = 0;
  5. for (i = 0; i < 2; i++)
  6. {

  7. int j = 5;
  8. switch (j)
  9. {

  10. case 4:
  11. printf(“你好 %d !!!\n”, 4);
  12. break;
  13. case 5:
  14. printf(“你好 %d !!!\n”, 5);
  15. break;
  16. case 6:
  17. printf(“你好 %d!!!\n”, 6);
  18. break;
  19. }
  20. printf(“Hello World!\n”);
  21. }
  22. }

  23. /*
  24. test5()中循环内部的switch语句中的continue是直接结束本次循环,
  25. switch语句块后面的printf(“Hello World!\n”);将不会被执行。
  26. */
  27. void test5()
  28. {

  29. int i = 0;
  30. for (i = 0; i < 2; i++)
  31. {

  32. int j = 5;
  33. switch (j)
  34. {

  35. case 4:
  36. printf(“你好 %d !!!\n”, 4);
  37. continue;
  38. case 5:
  39. printf(“你好 %d !!!\n”, 5);
  40. continue;
  41. case 6:
  42. printf(“你好 %d!!!\n”, 6);
  43. continue;
  44. }

  45. printf(“Hello World!\n”);
  46. }
  47. }

  48. int main()
  49. {


  50. test1();
  51. printf(“———————————————————“);
  52. test2();
  53. printf(“———————————————————“);

  54. test3();
  55. printf(“———————————————————“);

  56. test4();
  57. test5();
  58. printf(“———————————————————“);

  59. system(“pause”);
  60. return 0;
  61. }





作业粉碎机 发表于 2025-5-28 12:31 | 显示全部楼层
break和continue在控制循环流程中扮演着重要的角色。通过提供的代码示例,我们可以清楚地看到它们在不同场景下的具体应用。
alxd 发表于 2025-6-7 11:58 | 显示全部楼层
break 的用法作用:立即终止当前循环(for、while、do-while)或switch语句,并跳出执行循环后的代码。
Betty1299 发表于 2025-6-7 13:06 | 显示全部楼层
提前退出循环(如满足某个条件时)。退出多层嵌套循环(需配合标签使用)
Charlotte夏 发表于 2025-6-7 14:17 | 显示全部楼层
continue 的用法作用:跳过当前循环的剩余部分,直接进入下一次循环迭代(不终止循环)。
limerenceforu 发表于 2025-6-7 15:18 | 显示全部楼层
使用continue的话,可以忽略某些特定条件下的处理(如过滤无效数据)
Espoironenext 发表于 2025-6-7 16:29 | 显示全部楼层
break 退出外层循环(C99+):使用标签指定要退出的循环层级
Ustinian 发表于 2025-6-7 18:04 | 显示全部楼层
避免滥用,过度使用break或continue可能降低代码可读性。
StarrismNE 发表于 2025-6-7 19:24 | 显示全部楼层
替代方案,某些场景可用条件语句(如if-else)重构,使逻辑更清晰。
Augenstern星星 发表于 2025-6-8 09:13 | 显示全部楼层
switch中的break,在switch中,break用于退出当前case,而非循环。
HeimdallHoney 发表于 2025-6-8 10:27 | 显示全部楼层
break:用于完全终止循环或switch。continue:仅跳过当前循环迭代。
Whosheart 发表于 2025-6-8 12:39 | 显示全部楼层
根据是否需要完全退出循环或仅跳过部分逻辑决定使用哪个关键字。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

109

主题

1988

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部

109

主题

1988

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部