为什么C++标准没有将sizeof(bool)定义为1?
- 论坛
- 为什么C++标准没有将sizeof(bool)定义为1?
6 浏览
为什么C++标准没有将sizeof(bool)定义为1?
C++标准本身规定了char
、signed char
和unsigned char
的大小为1字节。我想知道为什么它没有定义sizeof(bool)
的大小呢?
C++03标准$5.3.3/1说:
char
、signed char
和unsigned char
的sizeof
结果为1;应用于其他任何基本类型(3.9.1)的sizeof
结果由实现定义。[注意:特别是sizeof(bool)
和sizeof(wchar_t)
是实现定义的。69)]
我理解sizeof(bool)
不能小于1字节的原理。但是有没有什么理由使它大于1字节呢?我不是说实现必须定义它大于1,但标准将其定义为由实现定义,就好像它可能大于1一样。
如果sizeof(bool)
没有必要大于1字节,那么我不明白为什么标准没有将其定义为只有1字节
,就像定义了sizeof(char)
和它的变体一样。