C++ 标准是否对大小(以字节为单位)的排序提供任何保证?char
, wchar_t
, char16_t
, char32_t
? (欢迎任何标准摘录)
例如,我是否可以保证:
sizeof(char) <= sizeof(wchar_t) <= sizeof(char16_t) <= sizeof(char32_t)
It's 1 == sizeof(char) <= sizeof(wchar_t)
and 1 == sizeof(char) <= sizeof(char16_t) <= sizeof(char32_t)
.
5.3.3/1 Sizeof [expr.sizeof]
... sizeof(char)、sizeof(signed char) 和 sizeof(unsigned char) 均为 1。
... [ 注意:特别是 sizeof(bool)、sizeof(char16_t)、
sizeof(char32_t) 和 sizeof(wchar_t) 是实现定义的。75 —
尾注]。
3.9.1/5 基本类型 [basic.fundamental]
...类型 wchar_t 应具有相同的大小、符号和对齐方式
要求(3.11)作为其他整数类型之一,称为其
基础类型。类型 char16_t 和 char32_t 表示不同的类型
具有与 uint_least16_t 相同的大小、符号和对齐方式
uint_least32_t,分别在中,称为底层
类型。
更新:我在标准中没有找到它。参考参数 http://en.cppreference.com/w/cpp/types/integer说是为了uint_leastN_t
:
宽度至少为 8、16、32 和 64 的最小无符号整数类型
位分别
请注意, sizeof(char)==1 确实not意思是一个char有8位。也可以看看C++ FAQ https://isocpp.org/wiki/faq/intrinsic-types#bits-per-byte. 参考参数 http://en.cppreference.com/w/cpp/types/climits关于 CHAR_BIT 说:
字节中的位数
1.7/1 C++内存模型[intro.memory]
C++内存模型中的基本存储单位是字节。 A
字节至少足够大以包含基本的任何成员
执行字符集 (2.3) ...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)