在C语言中switch后面表达式可以是什么类型的

我查过很多书大部分说表达式只能是整型和字符型的,但是谭浩强出版的《C程序设计 第二版》说switch后面括弧内“表达式”,ANSI标准允许它为任何类型。到底哪个是正确的!!!???

都正确。switch语句都必须遵循规则如下:

只能针对基本数据类型中的整型类型使用switch,这些类型包括int、char等。对于其他类型,则必须使用if语句

switch()的参数类型不能为实型 。

case标签必须是常量表达式(constantExpression),如42或者'4'。

case标签必须是惟一性的表达式;也就是说,不允许两个case具有相同的值。

扩展资料:

语法

C语言程序语句

Switch用在编程中,如C语言中它经常跟Case一起使用,是一个判断选择代码。其功能就是控制流程流转的。

直线翻译:switch语句,即“切换”语句;case即“情况”。

switch语句的语法如下(switch,case,break和default是关键字):

switch ( 变量表达式 )

{

case 常量1 :语句;break;

case 常量2 :语句;break;

case 常量3 :语句;break;

...

case 常量n:语句;break;

default :语句;break;

}

当常量表达式所表达的量与其中一个case语句中的常量相符时,就执行此case语句后面的语句,并依次下去执行后面所有case语句中的语句,除非遇到break;语句跳出switch语句为止。如果常量表达式的量与所有case语句的常量都不相符,就执行default语句中的语句。

参考资料:百度百科-switch

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-02-05
都正确。switch语句都必须遵循规则如下:
只能针对基本数据类型中的整型类型使用switch,这些类型包括int、char等。对于其他类型,则必须使用if语句。
switch()的参数类型不能为实型

case标签必须是常量表达式(constantExpression),如42或者'4'。
case标签必须是惟一性的表达式;也就是说,不允许两个case具有相同的值。
扩展资料:
语法
C语言程序语句
Switch用在编程中,如C语言中它经常跟Case一起使用,是一个判断选择代码。其功能就是控制流程流转的。
直线翻译:switch语句,即“切换”语句;case即“情况”。
switch语句的语法如下(switch,case,break和default是关键字):
switch
(
变量表达式
)
{
case
常量1
:语句;break;
case
常量2
:语句;break;
case
常量3
:语句;break;
...
case
常量n:语句;break;
default
:语句;break;
}
当常量表达式所表达的量与其中一个case语句中的常量相符时,就执行此case语句后面的语句,并依次下去执行后面所有case语句中的语句,除非遇到break;语句跳出switch语句为止。如果常量表达式的量与所有case语句的常量都不相符,就执行default语句中的语句。
参考资料:搜狗百科-switch
第2个回答  2013-04-10
刚才试了一下,我定的是float类型,编译的时候 提示错误,说 switch后的表达式不是整型,那就表明,这个表达式只能是整型和字符型。(因为字符的数字特性,所以也可看做是整型)本回答被网友采纳
第3个回答  2013-04-10
整形包括: char、 wchar_t、 int、 long 、long long.
switch(表达式) 这里的表达式的结果类型我个人觉得必须是整形,也就是上述类型之一.
具体表达式是怎么样的,这不重要,只要有个整形的值就可以了。本回答被网友采纳
第4个回答  2019-01-03
switch后面表达式值的类型可以是int,char,long,但不能是double
相似回答