5.8 布尔函数

优质
小牛编辑
132浏览
2023-12-01

和返回其他任何类型一样,函数也能返回布尔值,将复杂的条件测试隐藏在函数中非常方便。例如:

bool isSingleDigit (int x)
{
  if (x >= 0 && x < 10) {
    return true;
  } else {
    return false;
  }
}

函数名是isSingleDigit。布尔函数常见的命名方式是,让名字听起来像是在提问题,回答是否即可。布尔函数的返回类型是bool,这意味着函数中的每个return语句都要提供一个布尔表达式。

例子中的代码比较直接,虽然实际可能不需要这么长。还记得表达式 x >= 0 && x < 10吧,它也是布尔类型,所以直接返回该表达式是没问题的,还可以避免if语句。

bool isSingleDigit (int x)
{
  return (x >= 0 && x < 10);
}

在main函数中,可以以常规的方式调用该函数:

cout << isSingleDigit (2) << endl;
bool bigFlag = !isSingleDigit (17);

第一行输出为真,因为2只有一位。不幸的是,C++输出布尔值的时候,并不直接显示“true”和“false”,而是显示整数1和0(可以通过boolalpha标记来修复这个问题,不过这个方式太过丑陋,我都不想提及)。

第二行中,只有当17是一位的数字时,bigFlag会被赋值为true。

最常见的用法是将布尔函数放在条件语句中:

if (isSingleDigit (x)) {
  cout << "x is little" << endl;
} else {
  cout << "x is big" << endl;
}