开关箱中"case"常量是否有变量类型?
Is there a variable type for the constant in a "case" in the switch-case?
假设我们有:
unsigned char test;
test=0xff;
switch (test)
{
case -1:
cout<<"hit 1";
break;
case 255:
cout<<"hit 2";
break;
}
为什么它给出"hit 2",而-1可以在内存中表示为无符号字符的0xff。是否有一个类型的常数(这里-1和255)在一个"case"在切换大小写?据我所知,没有变量类型,我们无法比较两个变量
标准规定:
6.4.2交换机语句[stmt.switch]
switch语句根据条件的值将控制转移到几个语句中的一个。
条件应为整型、枚举型或类型。如果是类类型,则在上下文中隐式地将条件转换为整型或枚举类型(第4条)。执行积分提升。 switch语句中的任何语句都可以用一个或多个case标签标记为:
case
constant-expression
:
,其中常量表达式应为转换后的常量表达式(5.19),与开关条件的提升类型一致。转换为开关条件的提升类型后,同一开关中的两个case常量不得具有相同的值。
数据类型为int
,因为所有较小的整型都升格为int
。
因为unsigned char
从0-255你有溢出
相关文章:
- c++类声明时,相同的例程,不同的成员变量类型
- 如何为 c++ 的不同变量类型的结构元素创建动态数组?
- 创建类似于布尔值的变量类型
- std::cin 从控制台获取两种不同的变量类型,'storing'以后使用第二种类型?
- 如何使用变量模板比较 C++ 17 中的变量类型?
- 是否有一个库可以检查C++中的变量类型?
- 与不同变量类型相比,用于变量的 Clang AST 匹配器
- 继承类中的 C++ 成员变量类型重写
- 如何在编译器时动态获取元组内的变量类型C++?
- 在C++中动态分配变量类型
- 用于浮点值的最佳变量类型
- 定义变量类型
- 错误 - 变量类型 "X" 是一个抽象类 - c++
- 在函数 (c++) 中分配变量类型和大小数组
- 具有容器变量类型的类模板
- 获取变量类型名称
- 沿枚举 c++ 返回变量类型
- 是否可以通过模板指定抽象类变量类型
- 什么是变量类型位(32)
- C++ 在知道变量类型之前使用自动定义的变量