永发信息网

c语言题目:为什么输出是的是"#&"?如果0代表假,1代表真,那么2代表什么?求详细解释@@

答案:4  悬赏:60  手机版
解决时间 2021-03-27 01:59
  • 提问者网友:人傍凄凉立暮秋
  • 2021-03-26 13:04
c语言题目:为什么输出是的是"#&"?如果0代表假,1代表真,那么2代表什么?求详细解释@@
最佳答案
  • 五星知识达人网友:怀裏藏嬌
  • 2021-03-26 13:44
#include
void main() {
int a=2,b=7,c=5;
switch(a>0) {
case 1:
switch(b<0) {
case 1:
printf("@");
break;
case 2:
printf("!");
break;
}
case 0:
switch(c==5) {
case 0:
printf("*");
break;
case 1:
printf("#");
break;
case 2:
printf("$");
break;
}
default:
printf("&");
}
printf("
");
}第一个switch(a>0)就是 switch(1),里面是switch无满足条件,未进去,但是case 1没有break (break在里面),就进入case 0了;
case 0里面是switch(c==5)也是 switch(1),进入内部case 1,输出“#”,但是case 0依然没得break,就进入default了;
default 打印:“&”
所以结果打印:"#&"
全部回答
  • 1楼网友:醉吻情书
  • 2021-03-26 17:07
2的目的就是忽悠你,没什么作用
  • 2楼网友:雾月
  • 2021-03-26 15:38
这个简单,case 0:switch(c==5)这条开始是要看(c==5)的bool值,为1,所以打印"#",至于2,case“2”不是类型“bool”的切换条件的有效值,但是在while中也是当真来看的,你可以试一下。接下来就跳出了(c==5)的判断,你如果后面加个break就结束了,这里会继续再打印"&".
你明白了么^_^
  • 3楼网友:街头电车
  • 2021-03-26 15:12
真假可表示为非零和零,所以任何非零的都表示真,2也表示真
因为上面最外层switch中,每个case执行后并没有break,所以会继续向下执行
switch(a>0)会进入到case 1,进而执行switch(b<0),b不小于0,则case 1和case 2都不会执行,但因为没有break,所以程序会继续向下执行,执行switch(a>0)的case 0,c==5为真, 所以会执行switch(c==5)的case 1,这里有break则跳出本级switch,跳出后上一级switch还是没有break,所以继续执行default,所以输出为"#&"追问在 “case 0:switch(c==5)”的花括号里既然是真为什么不执行case2?追答因为case 1后有break,直接跳出本级switch,另外case 2在这个例子中确实没有什么意义~只是迷惑你的
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯