main() {int a=2,b=7,c=5; switch(a>0) {case 1:switch(b<0) {case 1:printf(“@”); break; case 2: prin

main() {int a=2,b=7,c=5; switch(a>0) {case 1:switch(b<0) {case 1:printf(“@”); break; case 2: prin,第1张

记住,如果switch如果中间没有break,那么就会从上向下一直执行。
首先:switch(a>0) a>0 所以为1
执行case 1:switch(b<0) 不满足,为0
switch(b<0)
{case 1:printf(“@”); break;
case 2: printf(“!”); break;
} //都不满足,没有break,继续向下
然后: case 0: switch(c==5)
{case 0: printf(“”); break;
case 1: printf(“#”); break;
case 2: printf(“$”); break;
} //c==5 满足,值为1,执行case 1: printf(“#”); break;//[注]这里的break 是break掉switch(c==5),但是最外层的switch(a>0) 仍然没有break,所以继续向下执行
最后:执行default : printf(“&”);//此时仍然没有break,但是因为switch结束了,如果在switch中default下面还有的话仍然会继续执行
执行“\n”,程序结束

default是在switch条件不满足case时候默认执行的内容。
也就是如果条件不是1也不是2的话就从default开始执行。
比如:
switch(a)
{
case
1:
printf("one");break;
default:
printf("three");
case
2:
printf("two");break;
}
a=1
输出”one“
a=2
输出”two“
a=3
输出”threetwo
“(因为default那句没有break所以会继续执行case
2)
但是你的这段里面没有break,所有case执行完之后会接着执行下一句。所以无论条件是几最后x都是c。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13402358.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-29
下一篇 2023-07-29

发表评论

登录后才能评论

评论列表(0条)

保存