2014-01-21 50 views
3

我正在阅读C++ Primer,遇到一个包含C++数据类型最小保证大小的表,因为它写的是不保证bool的最小大小。
有什么特别的原因吗?为什么没有最小尺寸的bool数据类型?

+2

它不是重复的,我不是问为什么是布尔1字节的大小,我只是问为什么没有布尔的最小尺寸。 –

+0

*所有*数据类型至少有一个字节。 –

+0

@KeithThompson所有数据类型都是1字节自动保证,因为最小的可寻址单元的内存是1字节。 –

回答

2

理论上,布尔的大小只需要一位,但在内存分配中,类型需要与其他类型兼容,并且填充位有时用于不同的编译器和计算机体系结构,以便最小的胶囊存储任何数据类型是一个字节。

Why is a boolean 1 byte and not 1 bit of size?

按照最后的评论,我应该从维基百科的文章字节加上这句话:

字节/baɪt/是在计算和电信数字信息的单元最常见的是由八位。从历史上看,字节是用于在计算机中编码单个字符文本的位数[1] [2],因此它是许多计算机体系结构中最小的可寻址内存单元。

+2

不要忘记,'bool'类型的变量也必须是可寻址的(例如使用操作符'&'的地址),这也意味着它必须至少是系统的最小可寻址单元,通常是一个字节。 –

+0

在C++中,“字节”与“char”同义,并被定义为最小的可寻址内存单元。 – Casey

+3

您应该引用C++和/或C标准的相关部分,因为在前者中找不到保证“bool”的一个字节的任何内容。问题是为什么它*不*保证的最小尺寸。 – juanchopanza

相关问题