C语言中switch后面的表达式能不能是逻辑运算符?

比如这样的语句:switch(a>0)行不行?程序如下,题目是问程序的运行结果。#include<stdio.h>intmain(){inta=2,b=7,c=5;swi... 比如这样的语句:switch(a>0) 行不行?
程序如下,题目是问程序的运行结果。
#include<stdio.h>
int main()
{
int a=2,b=7,c=5;
switch(a>0)
{
case 1:switch(b<0)
{
case 0:printf("@");break;
case 1:printf("!");break;
}
case 0:switch(c==5)
{
case 0:printf("*");break;
case 1:printf("#");break;
default:printf("#");break;
}
default:printf("&");
}
printf("\n");
return 0;
}

我自己输到VC里面运行出来是@#&,但是我查了网上,有的人说答案是#&,说b<0是假的,不会运行switch(b<0)下面的分支。
展开
 我来答
kaixingui2012
2015-05-09 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6136万
展开全部
switch(a>0) 是可以的,只是它的case语句,只有两种可能,即case 0:和case 1:

因为逻辑运算结果只能是0和1
陀曼婉辛尔
游戏玩家

2020-04-16 · 游戏我都懂点儿,问我就对了
知道大有可为答主
回答量:1.1万
采纳率:34%
帮助的人:545万
展开全部
c语言中的逻辑运算符就三种,&&与||或!非,它们的优先极顺序为非,与,或。它们含义如下,!:当操做数为真时,结果为假,反之也成立,并且它的优先极也最高,因为只有它是单目运算符,&&:只有当两个操做数都为真时,结果才为真,否则为假。||:只有当两个操做数都为假时,结果才为假,否则结果为真。除了这些,逻辑运算符还有几点应注意,!运算符是右结合性,&&和||是左结合性。在逻辑表达式求解时,并不是所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求表达式的解时,才能执行该运算符。如
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shine1991
科技发烧友

推荐于2018-02-12 · 智能家居/数码/手机/智能家电产品都懂点
知道顶级答主
回答量:4.7万
采纳率:82%
帮助的人:2.3亿
展开全部
语法上讲可以
问题是这种逻辑判断只有真或假两种可能性
即接下来的case只能是case1或case 0
那么既然这样的话为什么不用if else呢
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jesry_wu
2015-05-09 · TA获得超过938个赞
知道小有建树答主
回答量:793
采纳率:72%
帮助的人:197万
展开全部
当然可以用,只要不是常量就行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
a1012144015
2015-05-09 · TA获得超过6415个赞
知道大有可为答主
回答量:9038
采纳率:40%
帮助的人:1301万
展开全部
不可以,他必须是一个变量
追问
我在VC里面运行过了 好像是可以的
追答
哦哦,那我不知道
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式