布尔量,字符和整数类型放到一起被称为整型。整型和浮点类型一起称为算术类型。枚举和类被称为用户定义类型。
c++对象的大小是用char的大小的倍数表示的。char类型被假定是实现选择的,在给定的计算机上选定最适合存储和操作字符的类型,典型情况下就是8位的字节。
enum keyword {ASM, AUTO, BREAK };
每个枚举都是一个独立的类型,枚举符的类型就是它所在的那个枚举。例如:AUTO的类型就是keyword。
如果某个枚举中所有枚举符的值均非负,该枚举的表示范围就是[0:n-1],其中n是能使所有枚举符位于此范围内的最小的2的幂。如果存在负的枚举值,该枚举的取值范围就是[-n, n-1]。
一个整型值可以显式的转换到一个枚举值。除非这种转换的结果位于该枚举的范围之内,否则就是无定义的。例如:
enum flag {x=1, y=2, z=4, e=8}; //范围0:15
flag f1 = 5; //类型错,5不是flag类型
flag f2 = flag(5); //可以,flag(5)是flag类型,且在flag的范围之内。
flag f3 = flag(z|e); //可以,flag(12)是flag类型且在flag的范围之内。
flag f4 = flag(99); //无定义,99不在flag的范围之内。