[英]About the size of unsigned char type in C++
标准C ++ [3.9.1-1]说明了这一点
对于无符号字符类型,值表示的所有可能位模式表示数字。
标准[18.3.2.4-(注释197)]也表示无符号字符的最大值等于C中的UCHAR_MAX
,在C标准[5.2.4.2.1]中定义为255。 那么这是否意味着C ++中unsigned char类型的大小恰好是8位?
从C11 5.2.4.2.1开始
下面给出的值应替换为适用于#if预处理指令的常量表达式。 此外,除了CHAR_BIT和MB_LEN_MAX之外,以下内容应替换为与根据整数提升转换的对应类型的对象的表达式具有相同类型的表达式。 它们的实现定义值的大小(绝对值)应等于或大于显示的值,并带有相同的符号。
(强调我的)
因此,该标准定义了UCHAR_MAX
至少需要为255但可能大UCHAR_MAX
值。
我们对尺寸的保证是:
sizeof(char) = 1 and sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) <= sizeof(long long)
至少数据类型的签名版本必须能够容纳:
char [-127, 127]
short [-32767, 32767]
int [-32767, 32767]
long [-2147483647, 2147483647]
long long [-9223372036854775807, 9223372036854775807]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.