首页 > 解决方案 > C 为什么布尔值实际上可以表示为一位时是一个字节?

问题描述

C why booleans are one bytes when they canreally be represented as one bit? I am talking about stdbool.h. Do the unecessary 7 bits of RAM go to waste?

标签: cmemorybooleanram

解决方案


为什么布尔值真正可以表示为一位时是一个字节?

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

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

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


推荐阅读