C语⾔switch结构中的break问题
“问题代码”如下:(在VS2019下运⾏)
#include<stdio.h>
#include<string.h>
int main()
{
int x =1, y =0, a =0, b =0;
switch(x)
{
case1:switch(y)
{
case0:a++;printf_s("%d**\n", x);break;//***************************1.
case1:b++;printf_s("%d**\n", x);break;
}
case2:a++; b++;printf_s("%d&&\n", x);break;//****************************2.
case3:a++; b++;break;
}
switch的用法c语言
printf_s("a=%d,b=%d\n", a, b);
return0;
}
这段代码的最后运⾏结果为:
为什么这个的运⾏结果是a=2,b=1,⽽不是a=1,b=0?
⽽且通过运⾏结果来看是先执⾏了1.然后有执⾏了2.。
结果之所以不是a=1,b=0,原因是:
(1)switch…case语句是顺序执⾏的,也就是说跟if…else语句类似。
(2)如果case语句没加break;语句,那么他会继续执⾏下⼀条case语句,不管他的条件成不成⽴!直到遇到break;语句之后才会退出switch结构。
也就是说,case条件成⽴,只是他能出switch结构的⼀个“钥匙”,⽽你必须要到⼀个switch结构的“门”,也就是break,才能真正出switch结构。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。