首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >C++:为什么bool的长度是8位?

C++:为什么bool的长度是8位?
EN

Stack Overflow用户
提问于 2010-01-14 22:04:52
回答 4查看 74.6K关注 0票数 145

在C++中,我想知道为什么bool类型是8位长(在我的系统上),而只有一位足以保存布尔值?

我过去认为这是出于性能的原因,但是在32位或64位的机器上,寄存器是32位或64位宽的,性能优势是什么?

或者这只是这些“历史”原因之一?

EN

回答 4

Stack Overflow用户

发布于 2010-01-14 22:06:44

内存是字节可寻址的。如果不对从内存中读取的字节进行移位或屏蔽,则无法对单个位进行寻址。我可以想象这是一个非常重要的原因。

票数 40
EN

Stack Overflow用户

发布于 2013-02-15 02:25:38

我知道这很陈旧,但我想我应该承认我的两分钱。

如果您将布尔值或数据类型限制为一位,那么您的应用程序将面临内存中断的风险。如何处理内存中只有一位长的错误统计数据?

我去参加一个求职面试,项目负责人对我说的其中一句话是:“当我们发出发射导弹的信号时,我们只需要通过无线发送一个简单的开关位。发送一个位的速度非常快,我们需要这个信号尽可能快。”

好吧,这是一个测试,看看我是否理解了概念和比特、字节和错误处理。对于一个坏人来说,发送一条消息是多么容易。或者如果在传输过程中比特被翻转到另一个方向,会发生什么。

票数 1
EN

Stack Overflow用户

发布于 2015-09-29 04:03:07

某些嵌入式编译器具有用于位打包布尔标志的int1类型(例如,用于Microchip MPU的CCS系列C编译器)。设置、清除和测试这些变量使用单指令位级指令,但由于其他答案中提到的原因,编译器将不允许任何其他操作(例如,获取变量的地址)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2064550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档