不能做 switch( ) 的参数类型是
时间: 2024-02-11 19:04:37 浏览: 35
不能做switch()的参数类型是浮点数类型(float、double等)和长整型(long long),因为在C语言中,switch()语句的参数类型必须是整型(int、short、char等)或枚举类型。
浮点数类型和长整型在内存中占用的字节数较多,使用它们作为switch()语句的参数会导致程序效率降低,而且在不同的编译器中,它们在内存中的表示方式也可能存在差异,会导致程序出现错误。
如果需要使用浮点数类型或长整型作为switch()语句的参数,可以使用类型转换将其转换为整型或枚举类型,从而避免上述问题。例如:
```c++
double x = 1.5;
int y = (int)x; // 将x转换为整型
switch (y) {
case 1:
printf("x is 1\n");
break;
case 2:
printf("x is 2\n");
break;
default:
printf("x is not 1 or 2\n");
break;
}
```
相关问题
switch参数类型
switch()的参数类型可以是:int,byte,short,String,char,enum。 在使用switch()时,一般括号内的参数都是int类型的,但是也可以是其他类型,因为Java会自动进行类型转换。例如,short或byte类型会自动转换成int类型。 另外,如果想将long类型转换成int类型作为switch()的参数,可以使用强制类型转换,编译和运行都会成功。 所以总结起来,除了int、byte、short之外,还可以使用String、char、enum和强制类型转换的long作为switch()的参数类型。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
强枚举类型不能使用switch吗
强枚举类型是可以使用switch语句的。在C++11及以上版本中,可以使用enum class定义强枚举类型,这种类型的枚举值是具有作用域的,因此可以避免命名冲突。在使用switch语句时,需要将强枚举类型的枚举值用作case关键字的参数,如下所示:
```
enum class Color { RED, GREEN, BLUE };
Color color = Color::RED;
switch (color) {
case Color::RED:
// 处理红色
break;
case Color::GREEN:
// 处理绿色
break;
case Color::BLUE:
// 处理蓝色
break;
}
```
需要注意的是,如果使用普通的枚举类型,枚举值是没有作用域的,因此可能会导致命名冲突和错误的结果。