C++中bool类型的使用细节
ANSIISO C++标准添加了一种名叫bool的新类型(对 C++来说是新的)。它的名称来源于英国数学家 George Boole,是他开发了逻辑律的数学表示法。在计算中,布尔变量的值可以是true或false。过去,C++和C一样,也没有布尔类型。在第5章和第6章中将会看到,C++将非零值解释为true,将零解释为false。然而,现在可以使用 bool类型来表示真和假了,它们分别用预定义的字面值 true 和 false 表示。也就是说,可以这样编写语句:
bool is ready=true;
字面值 true 和 false 都可以通过提升转换为 int 类型,true 被转换为1,而 false 被转换为 0:
int ans =true;int promise =falsei
//ans assigned lpromise assigned 0
另外,任何数字值或指针值都可以被隐式转换(即不用显式强制转换)为bool值。任何非零值都被转换为 true,而零被转换为 false:
bool start =-100;bool stop=0;
//start assigned true/stop assigned false
- 定义和初始化 bool 变量:
bool isTrue = true; // 初始化为 true
bool isFalse = false; //
bool flag = true;
if (flag) {// 执行条件为真的代码块
}bool a = true;
bool b = false;
bool result = a && b; // 逻辑与运算,result 的值为 false
result = a || b; // 逻辑或运算,result 的值为 true
result = !a; // 逻辑非运算,result 的值为 false
- 函数返回值:
bool isEven(int num) {return num % 2 == 0;
}
bool result = isEven(5); // 调用函数并将返回值赋给变量 result
需要注意的是,bool 类型的值可以隐式转换为整数类型,其中 true 转换为 1,false 转换为 0。而整数类型也可以隐式转换为 bool 类型,其中非零整数值会被转换为 true,而零值会被转换为 false。
bool b = 1; // b 的值为 true
int num = true; // num 的值为 1
另外,C++ 还提供了一种扩展的布尔类型叫做 std::boolalpha,它可以将 true 和 false 转换为字符串 “true” 和 “false”,或者将字符串 “true” 和 “false” 转换为相应的布尔值。
bool flag = true;
std::cout << std::boolalpha << flag; // 输出 "true"
对C++感兴趣的朋友点这里:C/C++课程