当前位置:  开发笔记 > 编程语言 > 正文

为什么c ++中的char和bool大小相同?

如何解决《为什么c++中的char和bool大小相同?》经验,为你挑选了4个好方法。

我正在阅读C++编程语言.Stroustrup在其中陈述sizeof(char) == 11 <= sizeof(bool).具体取决于实施.为什么像布尔这样的简单值与char相同?



1> Cybis..:

在现代计算机体系结构中,字节是存储器的最小可寻址单元.要将多个位打包成一个字节,需要应用额外的位移操作.在编译器级别,它是内存与速度要求的折衷(在高性能软件中,那些额外的位移操作可能会不必要地增加和减慢应用程序).



2> Robert Gambl..:

因为在C++中,您可以获取布尔值的地址,并且大多数机器无法处理单个位.


由此产生的"假指针"不能表示为char*,C++标准需要指向内置类型的指针(不包括指向函数的指针和指向成员的指针).因此,虽然对于用户定义的类型很有趣,但编译器不能将这个技巧用于bool.

3> Kibbee..:

它占用相同的空间,因为您可以在内存中写入的最小空间量是单个字节.两个值都存储在一个字节中.虽然理论上只需要1位来表示布尔值,但您仍然需要一个完整的字节来存储该值.



4> Rob Walker..:

从理论上讲,你只需要一个bool的位,但使用少于1个字节的数据是很麻烦的.您需要更多指示才能实现任何目标,而您并没有真正受益.

如果要将多个布尔值打包为单个字节,可以使用位域结构.

推荐阅读
Chloemw
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有