1️⃣ 布尔类型的大小

C/C++bool 通常占 1 个字节,也就是 sizeof(bool) == 1 在绝大多数编译器/平台上都成立。

1
2
3
4
5
6
#include <iostream>
int main() {
std::cout << sizeof(bool) << "\n";
}

// 输出结果:1

2️⃣ 为什么是一个字节 byte 而不是一个比特 bit

  • 内存通常按字节寻址
    • 在计算机系统中,一个地址通常指向一个字节byte
    • 如果一个对象要有自己的地址(比如 &b),那它至少得占一个可寻址的单位——通常就是 1 字节。
  • 实现 bool 用 1 字节最简单、最快
    • CPU 读写一个字节使用后 load/store 一条指令就够了。

参考资料:

为什么布尔占用一个字节(byte),而不是一位(bit)