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

6 浏览
0 Comments

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

C++标准本身规定了charsigned charunsigned char的大小为1字节。我想知道为什么它没有定义sizeof(bool)的大小呢?

C++03标准$5.3.3/1说:

charsigned charunsigned charsizeof结果为1;应用于其他任何基本类型(3.9.1)的sizeof结果由实现定义。[注意:特别是sizeof(bool)sizeof(wchar_t)是实现定义的。69)]

我理解sizeof(bool)不能小于1字节的原理。但是有没有什么理由使它大于1字节呢?我不是说实现必须定义它大于1,但标准将其定义为由实现定义,就好像它可能大于1一样。

如果sizeof(bool)没有必要大于1字节,那么我不明白为什么标准没有将其定义为只有1字节,就像定义了sizeof(char)和它的变体一样。

0