使用哪个值更好?布尔值true还是整数1?

15

这有任何意义吗?

3个回答

37

true是一个布尔值,用于表示某个二进制条件是否被满足。

1是一个整数字面量,用于计数。

不要将整数用于布尔值或反之。它们是不同的。

考虑一个变量int isEnabled。当然,我可以猜测01可能是这个变量的唯一意图的值。但从语言的角度来看,我什么都不会阻止我分配4247891。然而,使用布尔值将有效值限制为truefalse。这样就不留任何猜测的空间了。

(C++中int和bool有些可转换,但通常不被赞同)


5
布尔型在内存方面也要小得多。 - Devin Burke
3
仅做参考,Justin Satyr所说的是: 整数通常为4字节(32位),而布尔值为1字节(8位)。这些都取决于平台,但对于我所知道的所有主要平台来说,这是正确的。(是的,在完美的世界中,布尔值应该只有1位,但是在内存中引用只有1位是不可能的。) - Adam Casey
3
与std::vector<int>相比,std::vector<bool>要小得多,在其他情况下需要考虑对齐。 - Begemoth
std::vector<bool>其实是一堆位标志吗? - Roman A. Taycher

14

如果您的类型在逻辑上是布尔类型,我建议使用true。这样更清晰地表达了意图,使您的代码更易于维护。


3

为什么?当你需要一个布尔值时使用布尔类型;当你需要计数时使用整数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接