
| 运算符 | 含义 | 效 果 |
|---|---|---|
| && | 与 | 将两个表达式连接成一个。两个表达式必须都为 true,整个表达式才为 true |
| || | 或 | 将两个表达式连接成一个。必须有一个或两个表达式为 true,才能使整个表达式为 true。只要其中有一个为 true,那么另外一个就变得无关紧要 |
| ! | 非 | 反转一个表达式的“真相”。它使一个表达式从 true 变成了 false,或者从 false 变成了 true |
以下是使用 && 运算符的 if 语句示例:
if ((temperature <20) && (minutes > 12))
cout << "The temperature is in the danger zone.";
temperature<20 以产生 true 或 false 的结果,然后评估 minutes>12 以产生 true 或 false 的结果,最后,这两个结果被 AND 并列在一起,以得出整个表达式的最终结果。仅当 temperature 小于 20 且 minutes 大于 12 时,cout 语句才会执行,其中只要有一个表达式的结果被评估为 false,则整个表达式为 false,不执行 cout 语句。
表 2 显示了 && 运算符的真值表。该真值表列出了两个表达式可能的值及其所有可能的组合,以及由连接两个表达式的 && *** 作返回的结果值。
| 子表达式值所有可能的组合 | 整体表达式的值 |
|---|---|
| false && false | false(0) |
| false && true | false(0) |
| true && false | false(0) |
| true && true | true(1) |
如该表所示,要使 && 运算符返回 true 值,则两个子表达式都必须为 true。
注意,如果 && 运算符左侧的子表达式为 false,则不会检查右侧的表达式。因为只要有一个子表达式为 false,则整个表达式都为 false,所以再检查剩余的表达式会浪费 cpu 时间。这被称为短路评估。
|| 运算符|| 运算符被称为逻辑或运算符。它需要两个表达式作为 *** 作数,并创建一个表达式,当任何一个子表达式为 true 时,该表达式为 true。
以下是一个使用 || 运算符的 if 语句示例:
if ((temperature < 20) || (temperature > 100))
cout << "The temperature is in the danger zone.";
注意,被逻辑或连接在一起的两件事情应该都是逻辑表达式,它们的值为 true 或 false,按以下形式书写的if条件是不正确的:
if (temperature <20 || >100)
表 3 显示了或(||)运算符的真值表。| 子表达式值所有可能的组合 | 整体表达式的值 |
|---|---|
| false || false | false(0) |
| false || true | true(1) |
| true || false | true(1) |
| true || true | true(1) |
只要其中一个子表达式为 true,则整体表达式为 true,此时另外一个子表达式无论是 false 还是 true 都无关紧要。
需要注意的是,|| 运算符也将进行短路评估。如果 || 运算符左侧的子表达式为 true,则右侧的子表达式将不被检查,因为只要有一个子表达式为 true,那么整体表达式就可以被评估为 true。
! 运算符! 运算符被称为逻辑非运算符,执行逻辑 NOT *** 作。它可以反转一个 *** 作数的真值或假值。换句话说,如果表达式为 true,那么 ! 运算符将返回 false,如果表达式为 false,则返回 true。
以下是一个使用 ! 运算符的 if 语句示例:
if (!(temperature > 100))
cout << "You are below the maximum temperature. \n";
(temperature > 100) 将被测试为 true 或 false,然后!运算符被应用于该值。如果表达式 (temperature>100) 为 true,则!运算符返回 false。如果为 false,则!运算符返回 true。在该例子中,它相当于问“温度是不是不大于 100?”或“温度大于 100 是不是假的?”表 4 显示了非(!)运算符的真值表。
| 表达式 | 表达式的值 |
|---|---|
| ! false | true(1) |
| ! true | false(0) |
if (moreData == true)
它可以简写为:if (moreData)
再来看以下语句:if (moreData == false)
它可以使用逻辑非运算符简写为:if (! moreData)
&&、|| 和 ! 的优先级&&、|| 和 !的优先级为:! > && > ||
! 运算符比许多 C++ 运算符具有更高的优先级。因此,为了避免错误,应始终将其 *** 作数括在括号中,除非打算将其应用于没有其他 *** 作符的变量或简单表达式。例如,来看以下表达式:! (x > 2)
! x > 2
&& 和 || 运算符的优先级低于关系运算符,这意味着关系表达式先进行计算,然后再通过 && 和 || 运算符进行评估,因此有:
a > b && x < y 等同于(a > b) && (x < y)
a > b || x < y 等同于(a > b) | | (x < y)
在 && 和 || 同时使用的情况下,更是强烈地推荐使用括号,这是因为 && 的优先级高于 ||。如果没有括号表示执行顺序,那么 && 将永远在 || 之前完成,这可能并不符合编写者的初衷。
例如,假设有 3 个布尔变量 recentGrad、employed 和 goodCredit,则以下表达式:
recentGrad || employed && goodCredit
等同于以下表达式:recentGrad || (employ && goodCredit)
但是它并不等同于以下表达式:(recentGrad || employed)&& goodCredit
总结以上是内存溢出为你收集整理的C++ &&、||、!逻辑运算符用法详解全部内容,希望文章能够帮你解决C++ &&、||、!逻辑运算符用法详解所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)