当我们可以使用int时,为什么bool存在?

Lyn*_*ynx 2 c++ boolean

这听起来像是一个很愚蠢的问题。但是过去几天一直困扰着我。而且,我添加的标签不仅涉及C ++编程语言。我的问题是。在《计算机科学》中,布尔(布尔)数据类型只有两个可能的值。'对或错'。而且,在计算机科学中,1为true,0为false。那么为什么布尔值根本存在?为什么不使用只能返回两个可能值(例如1或0)的整数。

例如 :

bool mindExplosion = true; // true!
int mindExplosion = 1; // true!!
// or we can '#define true 1' and it's the same right?
Run Code Online (Sandbox Code Playgroud)

我想念什么?

Nat*_*ica 5

当我们可以使用int时,为什么bool存在?

好吧,您不需要大到一个int即可表示两个状态,因此允许使用较小的类型以节省空间是很有意义的

为什么不使用只能返回两个可能值(例如1或0)的整数。

就是这样bool这是一个无符号整数类型,表示true(1)或false(0)。


为此具有特定类型的另一个好处是,它无需文档即可表达意图。如果我们有类似的功能(警告,非常人为的例子)

void output(T const & val, bool log)
Run Code Online (Sandbox Code Playgroud)

很容易看到日志是一个选项,如果我们传递false,它就不会日志。如果不是

void output(T const & val, int log)
Run Code Online (Sandbox Code Playgroud)

然后我们不确定它会做什么。是否要求日志级别?是否登录的标志?还有吗


Dev*_*lar 5

我想念什么?

表现力。

当一个变量声明int可能被用来只为0和1,也可能持有的任何从INT_MIN..INT_MAX

声明变量时bool,将明确表明该变量将保留true / false值。

除其他事项外,这允许编译器int在您确实需要a的地方使用an bool或尝试将a存储2在时抛出警告bool。编译器是您的朋友;提供所有可能的提示,以便可以告诉您代码何时开始显得时髦。