运算符 | 含义 | 效 果 |
---|---|---|
&& | 与 | 将两个表达式连接成一个。两个表达式必须都为 true,整个表达式才为 true |
|| | 或 | 将两个表达式连接成一个。必须有一个或两个表达式为 true,才能使整个表达式为 true。只要其中有一个为 true,那么另外一个就变得无关紧要 |
! | 非 | 反转一个表达式的“真相”。它使一个表达式从 true 变成了 false,或者从 false 变成了 true |
if ((temperature <20) && (minutes > 12))
cout << "The temperature is in the danger zone.";
temperature<20
以产生 true 或 false 的结果,然后评估 minutes>12
以产生 true 或 false 的结果,最后,这两个结果被 AND 并列在一起,以得出整个表达式的最终结果。子表达式值所有可能的组合 | 整体表达式的值 |
---|---|
false && false | false(0) |
false && true | false(0) |
true && false | false(0) |
true && true | true(1) |
if ((temperature < 20) || (temperature > 100))
cout << "The temperature is in the danger zone.";
if (temperature <20 || >100)
表 3 显示了或(||)运算符的真值表。子表达式值所有可能的组合 | 整体表达式的值 |
---|---|
false || false | false(0) |
false || true | true(1) |
true || false | true(1) |
true || true | true(1) |
if (!(temperature > 100))
cout << "You are below the maximum temperature. \n";
(temperature > 100)
将被测试为 true 或 false,然后!运算符被应用于该值。如果表达式 (temperature>100)
为 true,则!运算符返回 false。如果为 false,则!运算符返回 true。在该例子中,它相当于问“温度是不是不大于 100?”或“温度大于 100 是不是假的?”表达式 | 表达式的值 |
---|---|
! false | true(1) |
! true | false(0) |
if (moreData == true)
它可以简写为:if (moreData)
再来看以下语句:if (moreData == false)
它可以使用逻辑非运算符简写为:if (! moreData)
布尔类型是 C99 标准新增加的,定义布尔类型变量的方式有两种,一种是使用 _Bool 类型,另一种是使用 <stdbool.h> 头文件中定义好的 bool 类型,感兴趣的小伙伴请猛击这里了解详情。
! > && > ||
! 运算符比许多 C++ 运算符具有更高的优先级。因此,为了避免错误,应始终将其操作数括在括号中,除非打算将其应用于没有其他操作符的变量或简单表达式。例如,来看以下表达式:
! (x > 2)
! x > 2
a > b && x < y 等同于(a > b) && (x < y)
a > b || x < y 等同于(a > b) | | (x < y)
当表达式内包含多个运算符时,强烈建议用一个表达式中,可能包含多种运算符混合使用,例如 !a||++b+2*3&&a--,这种情况下先计算谁后计算谁,要根据各个运算符的优先级和结合性来决定,感兴趣的小伙伴请猛击这里详细了解各个运算符的优先级和结合性。
( )
括号标明计算顺序。例如,在 && 和 || 同时使用的情况下,由于 && 的优先级高于 ||,如果没有括号表示执行顺序,那么 && 将永远在 || 之前完成,这可能并不符合编写者的初衷。比如有 3 个布尔变量 recentGrad、employed 和 goodCredit,则以下表达式:
recentGrad || employed && goodCredit
等同于以下表达式:recentGrad || (employ && goodCredit)
但是它并不等同于以下表达式:(recentGrad || employed)&& goodCredit
Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有