若有以下定义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算是常量还是算术表达式? 展开
{ 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算是常量还是算术表达式? 展开
3个回答
展开全部
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
展开全部
B原题写的不是(int)x,是int(x),强制类型转换的INT必须有括号.1+2是常量.常量跟变量是相对的,常量跟算术表达式不冲突吧?这个概念记不清了.所有编译阶段能确定下来的式子,都算是常量,不是变量
追问
那(int)x算常量吗
追答
B的写法,就是你现在这个也是不对的,强制类型转移的INT必须有括号,上编译器试一下就知道了.表达式那个定义记不住了,只要是编译阶段有确定值的整形常量,都可以放在CASE后面
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
B这么写应该是对的,但是我刚才百度了一下,这道题B选项switch(int(x))后面貌似还有一个;号,所以是错的!
更多追问追答
追问
哦 确实 ...我没仔细看 那1+2是常量还是算术表达式呢....另外(int)x是常量吗
追答
1+2应该是算术表达式,但是它的值是唯一的呀,(int)x也是表达式吧,它的值是整形的!
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询