在C ++中使用bool而不是char有什么意义?

时间:2013-11-03 13:21:42

标签: c++ char boolean bit-manipulation

sizeof(char)和sizeof(bool)都等于1(在我的编译器/系统/无论如何,我听说它并不总是相同的值),bool只能存储true或false而char可以使用更多的值,并可以使用按位运算符作为多个bool变量(8位,每位可以用作1个bool,总共8个bool)

使用bool而不是char有什么好处吗?

除了可读性之外还有别的什么吗?我已经读过某个地方,即使占用更多内存,int的处理速度也比short或byte快。 char和bool之间的速度有什么不同吗?

2 个答案:

答案 0 :(得分:12)

使用bool的要点是表达意图。如果变量旨在存储具有true / false语义的值,则允许其他值只是潜在的错误来源。

答案 1 :(得分:3)

bool是“boolean”的缩写,因此每个熟悉boolean algebra的人都可以确定该变量可能只存储两个逻辑值中的一个(true或{{ 1}}):如果你需要一个只能处于这两种逻辑状态之一的变量,是否有理由使用可以存储其他东西的东西?

标准明确定义的唯一尺寸是false,它是1个字节,但sizeof(char) differs。每个值1位,大约是boolean vector模板。

[引起注意的编辑]

您已对自己的应用进行了分析,发现这是一个瓶颈?据我所知,除了使用boolean vectors,如果你需要存储和操作几个布尔变量,没有任何优势。