这也与char32_t和任何intXX_t有关。该规范指出:
2.14.3.2:
包含单个c-char的char16_t文字的值等于它的ISO 10646代码点值,条件是该代码点可以用单个16位代码单元表示。
5.3.3.1
..特别是..。sizeof(char16_t)、sizeof(char32_t)和wchar_t(Wchar_t)是实现定义的。
除了评论说它们是“可选的”( intXX_t )之外,我看不到任何关于18.4.1类型的信息。
如果一个char16_t不能保证为2字节,那么它是否保证为16位(即使在1字节=8位的架构中也是如此)?
发布于 2011-06-22 13:50:42
3.9.1基本类型basic.fundamental
类型char16_t和char32_t分别表示具有与uint_least16_t和uint_least32_t相同大小、签名性和对齐性的不同类型,分别称为底层类型。
这意味着char16_t至少有16位(但可能更大)
但我也相信:
包含单个c-char的char16_t文字的值等于它的ISO 10646代码点值,条件是该代码点可以用单个16位代码单元表示。
提供相同的保证(虽然不那么明确(因为您必须知道ISO 10646是UCS (注意UCS兼容但与Unicode不完全相同))。
发布于 2011-06-22 13:48:40
包含单个c-char的
char16_t文字的值等于它的ISO 10646代码点值,条件是该代码点可以用单个16位代码单元表示。
如果char16_t不至少16位宽,这是不可能满足的,因此矛盾的是,它保证至少那么宽。
发布于 2011-06-22 13:54:26
它不能保证只有16位,因为有些平台不支持那么小的类型(例如,DSP通常不能处理任何小于它们的字大小的东西,可能是24位、32位或64位)。你的第一次报价保证它至少是16位。
https://stackoverflow.com/questions/6440812
复制相似问题