C语言中退出while(1)循环:return 0与break的区别疑问
return 0; 和 break; 在C语言里的核心区别(结合你的代码分析)
嘿,我来给你把这个点讲明白~你困惑的点其实是这两个语句的作用范围完全不一样:
先搞懂各自的本质
break;:它的能力仅限于「跳出当前所在的循环/switch」,跳出之后程序会继续执行循环/switch后面的代码。比如你在while循环里用break,跳出后会去执行while大括号外面的代码(如果有的话),整个函数还在运行,程序也不会终止。return 0;:它是直接结束整个函数的执行!不管你嵌套了多少层循环、多少个判断,只要执行到return,当前函数就立刻停止,回到调用这个函数的地方。而在main()函数里,return 0意味着直接终止整个程序——因为main是程序的入口,它结束了,整个程序就结束了。
结合你的代码具体分析
看你写的这段代码:
#include<stdio.h> int main() { while(1) { printf("Enter number: "); scanf("%d", &num); // 哦对了,这里num没声明,编译会报错哦 if (num==2) { return 0; } else { printf("Num = %d", num); } return 0; // 这里还有个return! } }
- 当输入的
num == 2时,执行return 0;——直接结束main()函数,整个程序终止,while循环自然就停了,根本不会再循环下去。 - 另外要提醒你:这段代码里的while循环其实永远跑不到第二次迭代,因为不管你输入的num是不是2,第一次循环结束前都会执行到
return 0;(else分支执行完printf后,就会走到循环末尾的return 0),所以这个while(1)其实是个假的无限循环😅
举个对比例子更清楚
如果把你的代码改成用break:
#include<stdio.h> int main() { int num; // 先声明变量 while(1) { printf("Enter number: "); scanf("%d", &num); if (num==2) { break; // 只跳出while循环 } else { printf("Num = %d\n", num); } } // 跳出循环后,这里的代码还会执行 printf("循环已经结束啦,程序还在继续跑~\n"); return 0; }
这时候输入2,程序会跳出while循环,然后执行后面的printf,最后才终止;而如果用return 0,输入2后会直接终止,不会执行循环外的代码。
内容的提问来源于stack exchange,提问作者user9639282
相关产品推荐
相关产品推荐

