若有以下定义float x;int a,b;则正确的switch语句是

A:switch(x){case1.0:printf("*\n")case2.0:printf("**\n")}B:switch(int(x)){case1:printf... A:switch(x)
{ case1.0:printf("*\n")
case 2.0:printf("**\n")
}
B:switch(int(x))
{ case1:printf("*\n")
case 2:printf("**\n")
}
C:switch(a+b)
{ case1:printf("*\n")
case 1+2:printf("**\n")
}
D:switch(a+b)
{ case1:printf("*\n")
case c:printf("**\n")
}
问题这里 请帮忙分辨一下 B为什么错 C为什么对
既然a+b都可以写在switch里面 那(int)x也没什么不行啊 (int)x算什么表达式呢
还有c中的1+2算是常量还是算术表达式?
展开
 我来答
帐号已注销
2020-11-28 · TA获得超过76.9万个赞
知道小有建树答主
回答量:4168
采纳率:93%
帮助的人:139万
展开全部

B原题写的不是(int)x,是int(x),强制类型转换的INT必须有括号。1+2是常量,常量跟变量是相对的,常量跟算术表达式不冲突,所有编译阶段能确定下来的式子,都算是常量,不是变量。

假如 a=1, b=2 switch(a+b) 等价于 switch(3)

case 1+2 等价于 case 3

A和B使用了非整形表达式,switch里只能用整形表达式,字符会被转换成整形,case里只能用常数,并且各异,而D的switch后面有个分号 switch(a-b);

扩展资料:

Integer 一个整型数据用来存储整数,整数包括正整数,负整数和零。

整型常量采用十进制整数表示。如 1991,0,-123等等都是整型常量。而52.0或131.4都不是整型常量。

Integer 变量存储为最接近编译环境的长度,例如在32位的编译环境下,Integer为32位,其范围为 -2^15 到 2^15-1 之间。

VB中Integer 的类型声明字符是百分比符号 (%)。Pascal中就是integer。在C语言中被缩写成为int。

参考资料来源:百度百科-integer

百度网友37cd42286
2012-03-06 · TA获得超过321个赞
知道小有建树答主
回答量:401
采纳率:0%
帮助的人:360万
展开全部
B原题写的不是(int)x,是int(x),强制类型转换的INT必须有括号.1+2是常量.常量跟变量是相对的,常量跟算术表达式不冲突吧?这个概念记不清了.所有编译阶段能确定下来的式子,都算是常量,不是变量
追问
那(int)x算常量吗
追答
B的写法,就是你现在这个也是不对的,强制类型转移的INT必须有括号,上编译器试一下就知道了.表达式那个定义记不住了,只要是编译阶段有确定值的整形常量,都可以放在CASE后面
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
斋傲云06
推荐于2017-12-15 · TA获得超过280个赞
知道小有建树答主
回答量:303
采纳率:0%
帮助的人:251万
展开全部
B这么写应该是对的,但是我刚才百度了一下,这道题B选项switch(int(x))后面貌似还有一个;号,所以是错的!
更多追问追答
追问
哦 确实 ...我没仔细看 那1+2是常量还是算术表达式呢....另外(int)x是常量吗
追答
1+2应该是算术表达式,但是它的值是唯一的呀,(int)x也是表达式吧,它的值是整形的!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式