C ++中的布尔数据类型

时间:2020-02-23 14:29:53  来源:igfitidea点击:

在本文中,我们将介绍C ++中的Bool数据类型。

布尔数据类型是相当一段时间以来在C ++中存在的一种。
这为程序员使用布尔值而不是int来管理和编写条件语句提供了一种便捷的数据类型。

但是,请记住,bool和int本质上是相同的,只是有一些细微的差别。

让我们来看一些示例,看看如何使用此数据类型!

C ++中的bool数据类型

我们可以将此数据类型的变量仅分配给两个值:

  • true->等于整数值1
  • false->等于整数值0

以下方式显示了变量的分配方式。

bool var_1 = true; //Set var_1 to true
bool var_2 = false; //Set var_2 to false

有趣的是,如果您尝试使用std :: cout打印这些变量,则只会得到它们的整数值。

#include <iostream>

int main() {
  bool var_1 = true;
  bool var_2 = false;
  
  std::cout << "var_1: " << var_1 << std::endl;
  std::cout << "var_2: " << var_2 << std::endl;

  return 0;
}

输出

var_1: 1
var_2: 0

在C ++中使用布尔数据类型

" bool"数据类型最常见的用途是用于条件语句。
我们可以将条件与布尔值进行比较,并返回它们。

下面的代码片段显示了条件值为" bool"的比较。

#include <iostream>

int main() {
  int x = 10, y = 20;
  if ((x > y) == true)
      //The condition evaluates to true
      std::cout << "x > y\n";
  else
      //The condition evaluates to false
      std::cout << "x <= y\n";
  return 0;
}

输出

x <= y

我们也可以返回条件语句,因为它们也是'bool'。
我们可以使用它直接在函数中返回它们

例如,如果声明一个布尔函数以检查第一个参数是否大于第二个参数,则可以直接返回条件语句(x> y)。

bool check_greater(int x, int y) {
  return (x > y);
}

如果x> y则返回true,否则返回false。

转换为int/float/double

由于true的默认值为1(或者1.00),因此我们也可以通过强制类型转换将它们转换为int/float/double

有时,即使是编译器也将bool隐式转换为int/float,反之亦然。
因此,这现在非常方便!

以下表达式在C ++中有效:

int x = 10;
float y = 2.5;
float z = x + y + true + false;

其中由于所有类型都可以转换为左侧类型" float",因此" z"的值将分配为:10 + 2.5 + 1 + 0 = 13.5

如果LHS的数据类型为`bool',我们也可以做相反的操作。

int x = 10;
float y = 2.5;
bool z = x + y + true + false;

其中由于(bool)10 +(bool)2.5 + true + false =true + true + true + false=true,因此将为z赋予true。

使用布尔作为模板参数

由于bool是有效的数据类型,我们也可以将其作为模板参数传递。

例如,我们可以将其作为参数传递给std :: vector &lt;T>,以构造bools的向量!

#include <iostream>
#include <vector>

int main() {
  std::vector<bool> vec = {true, false, true, false};
  for (auto i: vec)
      std::cout << i << std::endl;
  return 0;
}

输出

1
0
1
0