算术类型
狭窄的角色类型
unsigned char
类型使用所有位来表示二进制数。因此,例如,如果 unsigned char
是 8 位长,则 char
对象的 256 个可能位模式表示 256 个不同的值{0,1,…,255}。保证数字 42 由位模式 00101010
表示。
signed char
类型没有填充比特,*即,*如果 signed char
是 8 比特长,则它具有 8 比特的容量来表示数字。
请注意,这些保证不适用于窄字符类型以外的类型。
整数类型
无符号整数类型使用纯二进制系统,但可能包含填充位。例如,unsigned int
有可能(尽管不太可能)为 64 位长,但只能存储 0 到 2 32 - 1 之间的整数。其他 32 位是填充位,不应直接写入。
有符号整数类型使用带符号位和可能填充位的二进制系统。属于有符号整数类型的公共范围的值和对应的无符号整数类型具有相同的表示。例如,如果 unsigned short
对象的位模式 0001010010101011
表示值 5291
,则它还表示当被解释为 short
对象时的值 5291
。
它是实现定义的,是否使用了二进制补码,一个补码或符号幅度表示,因为所有三个系统都满足前一段中的要求。
浮点类型
浮点类型的值表示是实现定义的。最常见的是,float
和 double
类型符合 IEEE 754 并且长度为 32 和 64 位(因此,例如,float
将具有 23 位精度,其将遵循 8 个指数位和 1 个符号位)。但是,该标准不保证任何内容。浮点类型通常具有陷阱表示,这会在计算中使用时导致错误。