因为bool
,它是 8 位的,而只有真假,他们为什么不把它做成一个位。
而且我知道有bitset
,但是它不那么方便,我只是想知道为什么?
主流CPU硬件层面的基本数据结构是字节。对这些 CPU 中的位进行操作需要额外的处理,即一些 CPU 时间。对于bitset
.
不完全是为什么没有原生类型的答案。但是您可以在这样的结构中获得 1 位类型:
struct A {
int a : 1; // 1 bit wide
int b : 1;
int c : 2; // 2 bits
int d : 4; // 4 bits
};
因此,sizeof(A) == 1
可能是如果没有填充(这可能会将其变为 的倍数sizeof(void*)
,即对于 32 位系统可能为 4)。
请注意,由于其他人陈述的原因,您无法获得指向任何这些字段的指针。这也可能是为什么不存在原生类型的原因。