C++ &&、 您所在的位置:网站首页 c语言中与或非运算 C++ &&、

C++ &&、

2024-04-06 18:12| 来源: 网络整理| 查看: 265

逻辑运算符可以将两个或多个关系表达式连接成一个或使表达式的逻辑反转。本节将介绍如何使用逻辑运算符将两个或多个关系表达式组合成一个。表 1 列出了 C++ 的逻辑运算符。 表 1 逻辑运算符 运算符 含义 效 果 && 与 将两个表达式连接成一个。两个表达式必须都为 true,整个表达式才为 true || 或 将两个表达式连接成一个。必须有一个或两个表达式为 true,才能使整个表达式为 true。只要其中有一个为 true,那么另外一个就变得无关紧要 ! 非 反转一个表达式的“真相”。它使一个表达式从 true 变成了 false,或者从 false 变成了 true && 运算符 && 运算符被称为逻辑与运算符。它需要两个表达式作为操作数,并创建一个表达式,只有当两个子表达式都为 true 时,该表达式才为 true。 以下是使用 && 运算符的 if 语句示例:

if ((temperature 12))     cout 100))     cout 100))     cout 100) 将被测试为 true 或 false,然后!运算符被应用于该值。如果表达式 (temperature>100) 为 true,则!运算符返回 false。如果为 false,则!运算符返回 true。在该例子中,它相当于问“温度是不是不大于 100?”或“温度大于 100 是不是假的?” 表 4 显示了非(!)运算符的真值表。 表 4 逻辑非运算符的真值表 表达式 表达式的值 ! false true(1) ! true false(0) 布尔变量和!运算符 布尔变量的一个有趣特性是它的值可以简单地通过命名来测试。假设 moreData 是一个布尔变量,其测试语句如下:

if (moreData == true)

它可以简写为:

if (moreData)

再来看以下语句:

if (moreData == false)

它可以使用逻辑非运算符简写为:

if (! moreData)

布尔类型是 C99 标准新增加的,定义布尔类型变量的方式有两种,一种是使用 _Bool 类型,另一种是使用 头文件中定义好的 bool 类型,感兴趣的小伙伴请猛击这里了解详情。 

&&、|| 和 ! 的优先级 &&、|| 和 !的优先级为:

! > && > ||

! 运算符比许多 C++ 运算符具有更高的优先级。因此,为了避免错误,应始终将其操作数括在括号中,除非打算将其应用于没有其他操作符的变量或简单表达式。例如,来看以下表达式:

! (x > 2) ! x > 2

第一个表达式将 !运算符应用于表达式 x>2,它是在问“x 是否不大于 2”,然而,第二个表达式是将 !运算符应用于到 x。它是在问“x 的逻辑是否大于 2”。假设 x 被设置为 5,由于 5 是非零值,所以被认为是 true,而 !运算符会将其反转为 false,即为 0,然后,> 运算符将确定 0 是否大于 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 2018-2019 实验室设备网 版权所有