为什么标准本身没有将 sizeof(bool) 定义为 1?

char、signed char 和 unsigned char 的大小由 C++ 标准本身定义为 1 个字节.我想知道为什么它也没有定义 sizeof(bool) ?

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(char),sizeof(signed char) and sizeof(unsigned char) are 1; the result of sizeof applied to any other fundamental type (3.9.1) is implementation-defined. [Note: in particular,sizeof(bool) and sizeof(wchar_t) are implementation-defined.69)

我理解 sizeof(bool) 不能小于一个字节.但是有什么理由为什么它应该大于 1 个字节吗?我并不是说实现将它定义为大于 1,但标准让它由实现定义好像它可能大于 1.

如果没有理由 sizeof(bool) 大于 1,那么我不明白为什么标准没有将它定义为 1 字节,因为它已经定义了 sizeof(char),而且都是变体.

tns1986 回答:为什么标准本身没有将 sizeof(bool) 定义为 1?

许多平台无法有效加载小于 32 位的值.他们必须加载 32 位,并使用移位和掩码操作来提取 8 位.对于单个 bool,你不希望这样,但对于字符串来说没问题.

这篇关于为什么标准本身没有将 sizeof(bool) 定义为 1?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持前端之家!

本文链接:https://www.f2er.com/3181271.html

大家都在问