关于C语言中 || 和 &&的用法

刚开始学C语言 反复读了几遍||和&&的用法和例子还是不太明白书上写的解释请帮忙举个简单的例子讲解一下意思和用法好么,十分感谢~

区别:

1.运算符性质不同。

&是一个位运算符。

&&是一个逻辑运算符。

2.作用不同。

&是将两个二进制的数逐位相与,结果是相与之后的结果。

&&就是判断两个表达式的真假性,只有两个表达式同时为真才为真,有一个为假则为假,具有短路性质。

3.用途限制。

&除了是一个位运算符,也是取地址符。

&&就是一个单纯的逻辑运算符,没有任何其他含义。

参考资料

&-百度百科

&&-百度百科

温馨提示:内容为网友见解,仅供参考
第1个回答  2021-07-20

“||”“ &&”表示逻辑运算,“||”表示或者的意思,“&&” 表示并且的意思。

&&运算符需要两个表达式作为操作数,并创建一个表达式,只有当两个子表达式都为true时,该表达式才为true。

||运算符需要两个表达式作为操作数,并创建一个表达式,当任何一个子表达式为true时,该表达式为true。只要其中一个子表达式为true,则整体表达式为true,此时另外一个子表达式无论是false还是true都无关紧要。



运算符的优先级

优先级与求值顺序无关。如a+b && b*c,虽然*优先级最高,但这个表达式求值顺序是从左到右。

优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。相同优先级中,按结合性进行结合。大多数运算符结合性是从左到右,只有三个优先级是从右至左结合的,它们是单目运算符、条件运算符、赋值运算符。

基本的优先级需要记住:

指针最优,单目运算优于双目运算,如正负号。先算术运算,后移位运算,最后位运算。请特别注意:逻辑运算最后结合。

本回答被网友采纳
第2个回答  2020-09-18
逻辑运算符可以将两个或多个关系表达式连接成一个或使表达式的逻辑反转。本节将介绍如何使用逻辑运算符将两个或多个关系表达式组合成一个。表 1 列出了 C++ 的逻辑运算符。

表 1 逻辑运算符
运算符 含义 效 果
&& 与 将两个表达式连接成一个。两个表达式必须都为 true,整个表达式才为 true
|| 或 将两个表达式连接成一个。必须有一个或两个表达式为 true,才能使整个表达式为 true。只要其中有一个为 true,那么另外一个就变得无关紧要
! 非 反转一个表达式的“真相”。它使一个表达式从 true 变成了 false,或者从 false 变成了 true
&& 运算符

&& 运算符被称为逻辑与运算符。它需要两个表达式作为操作数,并创建一个表达式,只有当两个子表达式都为 true 时,该表达式才为 true。

以下是使用 && 运算符的 if 语句示例:
if ((temperature <20) && (minutes > 12))
cout << "The temperature is in the danger zone.";
请注意,这两个被逻辑与运算符连接在一起的表达式都是完整的表达式,它们的值可以被评估为 true 或 false。首先评估 temperature<20 以产生 true 或 false 的结果,然后评估 minutes>12 以产生 true 或 false 的结果,最后,这两个结果被 AND 并列在一起,以得出整个表达式的最终结果。

仅当 temperature 小于 20 且 minutes 大于 12 时,cout 语句才会执行,其中只要有一个表达式的结果被评估为 false,则整个表达式为 false,不执行 cout 语句。

表 2 显示了 && 运算符的真值表。该真值表列出了两个表达式可能的值及其所有可能的组合,以及由连接两个表达式的 && 操作返回的结果值。

表 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.";
如果 temperature 小于 20 或者大于 100,那么 cout 语句将被执行。这两个子表达式只要其中一个为 true,则整个表达式为 true,执行 cout 语句。

注意,被逻辑或连接在一起的两件事情应该都是逻辑表达式,它们的值为 true 或 false,按以下形式书写的if条件是不正确的:
if (temperature <20 || >100)
表 3 显示了或(||)运算符的真值表。

表 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 显示了非(!)运算符的真值表。

表 4 逻辑非运算符的真值表
表达式 表达式的值
! false true(1)
! true false(0)
布尔变量和!运算符

布尔变量的一个有趣特性是它的值可以简单地通过命名来测试。假设 moreData 是一个布尔变量,其测试语句如下:
if (moreData == true)
它可以简写为:
if (moreData)
再来看以下语句:
if (moreData == false)
它可以使用逻辑非运算符简写为:
if (! moreData)
&&、|| 和 ! 的优先级

&&、|| 和 !的优先级为:
! > && > ||
! 运算符比许多 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)
因此,在关系运算符与 && 和 || 混合时,通常不需要括号。当然,无论如何,使用括号都是一个好主意,因为它们可以让程序更易读。

在 && 和 || 同时使用的情况下,更是强烈地推荐使用括号,这是因为 && 的优先级高于 ||。如果没有括号表示执行顺序,那么 && 将永远在 || 之前完成,这可能并不符合编写者的初衷。

例如,假设有 3 个布尔变量 recentGrad、employed 和 goodCredit,则以下表达式:
recentGrad || employed && goodCredit
等同于以下表达式:
recentGrad || (employ && goodCredit)
但是它并不等同于以下表达式:
(recentGrad || employed)&& goodCredit
第3个回答  推荐于2018-12-17

||是逻辑或,例子如下

//表达式1||表达式2
//如果表达式1是true或者表达式2是true,整条式子的结果就是true,否则是false
int a=0;
bool z=(a>0||a==0);
//这个例子中条件a==0,所以整条表达式的结果是true,如果表达式1的结果是true,
//那结果也是true

&&是逻辑与,例子如下:

//表达式1&&表达式2
//这个操作符要求两边的表达式都是true整条表达式才是true,如下
int a=0,b=0;
bool z=(a==0&&b==0);
//这个例子中两边的表达式都是true,所以最后的结果是true,如果有一边的表达式不是true,,结果就是false

本回答被网友采纳
第4个回答  推荐于2020-01-21
&& 和 || 都是逻辑表达式里常用的,一般用法是 if(表达式1 || 表达式2) 或者 if(表达式1 && 表达式2)
|| 表示 或 满足其中一个,整个表达式就为真,就满足if判定的条件
例如 if(1 || 0) std::cout <<"hello!\n"; 输出为hello
&& 表示 且 if括号内的表达式都为真 才能满足if判定的条件 才会执行if{}里的语句
不清楚请追问

关于C语言中 || 和 &&的用法
||就是逻辑里面的或,&&就是逻辑运算里面的与,if(a>1 || b>1){c = 0;} 上面只要a>1或者b>1,c就等于0,如果用&& ,就要同时都大于1咯

关于c语言中||和&&的用法
在C语言中,`||` 表示逻辑或,`&&` 表示逻辑与。逻辑或 1. 含义:`||` 在C语言中表示逻辑或操作。当两个操作数中至少有一个为真时,整个表达式为真。2. 用法:常用于控制语句中,如 `if` 语句。例如,`if ` 表示如果a大于b或者c大于d中的至少一个条件满足时,执行后续代码。3. 短路特性...

c语言中,两个&什么意思
&&代表逻辑运算符“与”,用于对两个条件求逻辑与,格式为:c1 && c2 其中c1和c2是两个表达式。当且仅当c1不等于0且c2不等于0,上式的值才为1(即“真”),否则为0

关于C语言中 || 和 &&的用法
&除了基本的位运算功能,还在某些编程场景中用于取地址,因为它代表了对内存地址的引用。&&则是一个纯粹的逻辑运算符,它的作用仅限于逻辑判断,没有其他额外含义。总结来说,C语言中的||和&&在操作性质、作用和应用场景上各有侧重,理解它们的特性和用途对于编写高效和逻辑清晰的代码至关重要。

请问在C语言中&&和||是什么意思来着
在C语言中,&&和||是逻辑操作符,用来进行逻辑与和逻辑或的运算。逻辑与(&&)操作符,只有当两边的表达式同时为真时,整个表达式的结果才是真。反之,只要有一边为假,则整个表达式的结果为假。具体表现为:0&&0=0,1&&0=0,0&&1=0,1&&1=1。逻辑或(||)操作符,则只要两边的任一表达式为...

c语言中的&&和||的区别
在C语言中,&& 和 || 都是逻辑运算符,用于连接两个布尔表达式,并判断它们的关系。但是它们之间有一些区别。&&(逻辑与):逻辑与运算符连接两个布尔表达式,并返回true或false。如果第一个表达式为false,则第二个表达式不再计算。例如,以下代码会输出false:在这个例子中,x == 0是false,因此整个...

c语言中,“&&”和“||”有什么用处?
c语言中,‖是“逻辑或”操作符。c语言中,‖是“逻辑或”操作符。其左右二个表达式中,只要有一个为真,运算结果就是真。按位与逻辑是不一样的,按位是以二进制来处理,而逻辑是来处理逻辑值,逻辑值要么为0,要么为非0 例如 7||0 为真;7&&0为假;7&0为0000,7二进制为0111,0二进制...

c语言逻辑运算符 我不明白&&和||到底是怎么运算的
||的形式为a||b。2 计算规则:&&只有当a和b的值均非0时,结果为1,否则结果为0。||只有当a和b的值均为0时,结果为0,否则结果为1。3 优先级:&&的优先级比||高,所以在写在一起时,先计算&& 再计算||。相同符号时,自左向右计算。4 短路原则:对于&&,如果左操作数a为0,那么结果...

c++中的&&和||分别表示什么意思?
c语言中的&&有三种使用方式。1 、取地址操作符。单目运算,与其后的变量或常量组合,用于获取该操作数的内存地址。2 、位操作中的按位与操作 双目运算符,&&的两边的表达式均参与操作。计算时按位计算。对于任意一位,如果两个操作数该位上的值均为1,则结果该位上为1。否则结果该位上值为0。3 ...

一文搞懂C语言中的|、||、&、&&(转)
C语言中,四种运算符|、||、&和&&有着不同的功能。|(按位或运算符)用于对整数类型的操作数进行对应位的逻辑或运算,返回运算结果。||(逻辑或运算符)用于判断两个表达式是否至少有一个为真,如果至少一个为非零,则返回非零;否则返回零。在条件语句中,如果第一个条件已满足,会"短路"不再...

相似回答