c++ - 为什么我们可以使用 int 时 bool 存在?

标签 c++ boolean

这听起来可能是一个非常愚蠢的问题。但是这几天一直困扰着我。而且它不仅涉及 C++ 编程语言,因为我已经添加了它的标签。我的问题是。在计算机科学中, boolean (bool) 数据类型只有两个可能的值。 '对或错'。而且,在计算机科学中,1 为真,0 为假。那么为什么 boolean 值存在呢?为什么我们不使用只能返回两个可能值的整数,例如 1 或 0。

例如:

bool mindExplosion = true; // true!
int mindExplosion = 1; // true!!
// or we can '#define true 1' and it's the same right?

我错过了什么?

最佳答案

Why does bool exist when we can use int?

好吧,您不需要像 int 这样大的东西来表示两个状态,因此允许使用较小的类型来节省空间是有意义的

Why not we use an integer that can return only two possible values, Such as 1 or 0.

这正是 bool 的含义。 It is an unsigned integer type that represents true (1) or false (0).


为此设置特定类型的另一个好处是它无需任何文档即可表达意图。如果我们有一个像(警告,非常人为的例子)这样的函数

void output(T const & val, bool log)

很容易看出 log 是一个选项,如果我们传递 false 它就不会记录。如果是的话

void output(T const & val, int log)

然后我们不确定它的作用。它要求日志级别吗?关于是否登录的标志?还有别的吗?

关于c++ - 为什么我们可以使用 int 时 bool 存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57828781/

相关文章:

c++ - 如何将 QGraphicsProxyWidget 放在 QGraphicsGridLayout 上?

c++ - 如何使用 `omp parallel` 或其他方式并行化 for 循环?

c++ - 何时更喜欢基于模板策略的设计而不是基于非模板继承的设计

php - 使用 PHP 测量和更改 MySQL 字段,但更改存储/显示不正确

c# - 如果 bool 为真则返回 int

c++ - CMake find_package 和 NO_SYSTEM_ENVIRONMENT_PATH

c++ - 为什么在从 win32 计时器回调中抛出时不调用我的析构函数?

java - 如何获取 boolean 用户输入

java - 为什么这会返回 false?

java - Boolean.valueOf(String) 可以返回 null 吗?