首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C++ char16_t的大小取决于什么?

C++ char16_t的大小取决于什么?
EN

Stack Overflow用户
提问于 2011-06-22 13:40:01
回答 3查看 2.4K关注 0票数 12

这也与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位的架构中也是如此)?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 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不完全相同))。

票数 12
EN

Stack Overflow用户

发布于 2011-06-22 13:48:40

包含单个c-char的char16_t文字的值等于它的ISO 10646代码点值,条件是该代码点可以用单个16位代码单元表示。

如果char16_t不至少16位宽,这是不可能满足的,因此矛盾的是,它保证至少那么宽。

票数 5
EN

Stack Overflow用户

发布于 2011-06-22 13:54:26

它不能保证只有16位,因为有些平台不支持那么小的类型(例如,DSP通常不能处理任何小于它们的字大小的东西,可能是24位、32位或64位)。你的第一次报价保证它至少是16位。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6440812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档