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)下面的分支。 展开
程序如下,题目是问程序的运行结果。
#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)下面的分支。 展开
5个回答
展开全部
c语言中的逻辑运算符就三种,&&与||或!非,它们的优先极顺序为非,与,或。它们含义如下,!:当操做数为真时,结果为假,反之也成立,并且它的优先极也最高,因为只有它是单目运算符,&&:只有当两个操做数都为真时,结果才为真,否则为假。||:只有当两个操做数都为假时,结果才为假,否则结果为真。除了这些,逻辑运算符还有几点应注意,!运算符是右结合性,&&和||是左结合性。在逻辑表达式求解时,并不是所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求表达式的解时,才能执行该运算符。如
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
语法上讲可以
问题是这种逻辑判断只有真或假两种可能性
即接下来的case只能是case1或case 0
那么既然这样的话为什么不用if else呢
问题是这种逻辑判断只有真或假两种可能性
即接下来的case只能是case1或case 0
那么既然这样的话为什么不用if else呢
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
当然可以用,只要不是常量就行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不可以,他必须是一个变量
追问
我在VC里面运行过了 好像是可以的
追答
哦哦,那我不知道
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询