和返回其他任何类型一样,函数也能返回布尔值,将复杂的条件测试隐藏在函数中非常方便。例如:
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;
}