Size of char
, signed char
and unsigned char
由 C++ 标准本身定义为 1 个字节。我想知道为什么它没有定义sizeof(bool)
also?
C++03 标准 $5.3.3/1 说,
sizeof(char)、sizeof(signed char) 和
sizeof(unsigned char) 为 1;这
sizeof 的结果应用于任何其他基本类型(3.9.1)是
实现定义的。 [笔记:在
特别是,sizeof(bool) 和
sizeof(wchar_t) 是
实现定义的.69)
我明白其中的道理sizeof(bool) 不能小于 1 个字节 https://stackoverflow.com/questions/4626815/why-is-a-boolean-1-byte-and-not-1-bit-of-size/4626993#4626993。但有什么理由让它大于 1 字节吗?我并不是说实现将其定义为大于 1,而是标准让它由实现定义就好像它可能大于 1 一样。
如果没有理由的话sizeof(bool)
大于 1,那么我不明白为什么标准没有将其定义为1 byte
,正如它所定义的sizeof(char)
,而且都是变体。
它的另一个可能的大小是int
,是平台的“高效”整数类型。
在架构上,无论实现选择 1 还是sizeof(int)
大小之间可能需要权衡(但如果你愿意每个字节浪费 7 位)bool
,为什么你不应该高兴地浪费31呢?当大小很重要时使用位域)与性能(但是什么时候存储和加载布尔值将成为真正的性能问题?使用int
当速度很重要时明确)。因此,如果出于某种原因,实施灵活性会获胜1
在性能或代码大小方面会很糟糕,但它可以避免它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)