标准C++ [3.9.1-1]说明了这一点
对于无符号字符类型,值表示的所有可能位模式表示数字.
标准[18.3.2.4-(注释197)]也表示无符号字符的最大值等于UCHAR_MAXC,C在C标准[5.2.4.2.1]中定义为255.那么这是否意味着C++中unsigned char类型的大小恰好是8位?
Nat*_*ica 11
从C11 5.2.4.2.1开始
下面给出的值应替换为适用于#if预处理指令的常量表达式.此外,除了CHAR_BIT和MB_LEN_MAX之外,以下内容应替换为与根据整数提升转换的对应类型的对象的表达式具有相同类型的表达式.它们的实现定义值的大小(绝对值)应等于或大于显示的值,并带有相同的符号.
(强调我的)
因此,该标准定义了至少UCHAR_MAX需要为255,但它可能大于255.
我们对尺寸的保证是:
sizeof(char) = 1 and sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) <= sizeof(long long)
Run Code Online (Sandbox Code Playgroud)
至少数据类型的签名版本必须能够容纳:
char [-127, 127]short [-32767, 32767]int [-32767, 32767]long [-2147483647, 2147483647]long long [-9223372036854775807, 9223372036854775807]| 归档时间: |
|
| 查看次数: |
6413 次 |
| 最近记录: |