C 为什么当布尔值真的可以表示为一位时,它们是一个字节?

Alg*_*lgo 1 c memory ram boolean

C 为什么当布尔值真的可以表示为一位时,它们是一个字节?我说的是 stdbool.h。不必要的 7 位 RAM 会被浪费吗?

Max*_*kin 7

为什么布尔值是一个字节,而它们真的可以表示为一位?

布尔值是对象。A bit 不是 C 中的对象,因为:

  • 它不能通过指针寻址。对象是1 个或更多字节的数据存储。字节是最小的可寻址内存单元。
  • sizeof并且alignof不能申请。

您仍然可以使用位字段或使用位运算符切换整数中的位来表示您的布尔值。