c语言的switch多分支语句的问题!!

#include<stdio.h>main(){inta=2,b=7,c=6;switch(a>0)-----为什么把a>0改成a<0结果还是一样的{case1:swit... #include <stdio.h>
main()
{int a=2,b=7,c=6;
switch(a>0)-----为什么把a>0改成a<0结果还是一样的
{case 1:switch(b<0)--
{case 1:printf("@");break;
case 2:printf("!");break;}
case 0:switch(c==5)------a>0成立为什么还执行case 0,case 0位假不应执行才对
{case 0:printf("*");break;
case 1:printf("#");break;
case 2:printf("$");break;}
default:printf("&");
}
}
结果输出的是“#&”
我的问题是为什么会输出#号,case 1,case 0,case 2是什么意思
针对问题回答 在网上拷贝的我不会理睬的
展开
 我来答
wangbwell
2011-02-15 · TA获得超过1238个赞
知道小有建树答主
回答量:490
采纳率:0%
帮助的人:731万
展开全部
//////////////////////////////////////////////////////////////////
问题的关键在于“break;”语句上,
而此程序最外层switch的case都没有break,
在没有break的情况,从匹配的case开始执行到
遇到相应层(此例为最外的switch)的case有break退出,
或者没有遇到而执行直到switch结束
/////////////////////////////////////////////////////////////////

#include <stdio.h>
main()
{
int a=2,b=7,c=6;
switch(a>0)-----switch(/*此处要求是整数*/) (a>0)的结果为true 转整数为1 执行case 1
{
case 1: ---a>0时,从开始执行
switch(b<0) -- (b<0)==false转整数0,应该执行case 0;但没有case 0:
{
case 1:printf("@");break; //
case 2:printf("!");break;
}
----此处缺少了“break;”所以继续执行下面case 0了,这就是你的问题1的答案
----a,b的值都大于0 时,你提到改siwtch(a>0或a<0),因为此case1下没有任何输出
----而且没有“break;”语句, 下面的case 0还要被执行,因此结果都一样
case 0: // 你说的改switch(a<0)时,从这里开始
switch(c==5)------(c==5)==false 转整数0 执行下面的case 1;
{
case 0:printf("*");break;
case 1:printf("#");break; //被执行 输出#
case 2:printf("$");break;
}
------此处又缺少break; 语句了 继续执行default
default:
printf("&"); ---输出&
}
}

没什么好说的了,就是break;的问题
电子产品第一线
2011-02-15 · TA获得超过228个赞
知道小有建树答主
回答量:332
采纳率:0%
帮助的人:235万
展开全部
你说的问题是因为case如果没有用break的时候会顺次执行其后边的所有case
比如
a=1;
switch(a)
{
case 1:
printf("1\n");
case 2:
printf("2\n");
case 3:
printf("3\n");
}

会输出1 2 3
所以你的问题中case 1没用break,用了的话结果会不同

程序问题挺多,总结一下
1. 一般很少用bool型做switch的判断式
2. bool型变量只有1 ,0两个值, 所以case 2完全是出来打酱油的
3. case 不要忘了里边的break
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
343779497
2011-02-15
知道答主
回答量:7
采纳率:0%
帮助的人:6万
展开全部
switch(a); switch(b);
把这个改了
switch语句的意思是 判断switch后括号里的变量 ,case 1: 如果括号里的值是1 ,case 2: 如果括号里的值是2 ,以此类推
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
白石黄海青
2011-02-15
知道答主
回答量:52
采纳率:0%
帮助的人:23.3万
展开全部
switch后面的括号里应是常量表达式,而不是不等式
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式