逻辑或:
如果任一操作数或两个操作数为true,则逻辑“或”运算符 (||) 返回布尔值true;否则返回false。操作数在计算之前隐式转换为类型bool,结果的类型为bool。两个操作数可以是变量、常量和表达式。逻辑“或”具有从左向右的关联性。 [2]
or运算符是||的等效文本。
逻辑“或”运算符的操作数不需要是同一类型,但是它们必须是整型或指针类型。操作数通常为关系或相等表达式。
第一个操作数将完全计算,并且在继续计算逻辑“或”表达式之前将完成所有副作用。
仅当第一个操作数的计算结果为 false (0) 时计算第二个操作数。在逻辑“或”表达式为 true 时,这将消除对第二个操作数的不必要的计算。
在决定一事物的若干条件中,只要有一个条件能满足时,结果就会出现;只有当所有条件都不满足是,结果才不出现,这种因果关系就称为“逻辑或”。
逻辑与:
“&&” “·”表示与 (逻辑与)是逻辑运算符。
“逻辑与”相当于生活中说的“并且”,就是两个条件都同时成立的情况下“逻辑与”的运算结果才为“真”。
逻辑运算符把各个运算的变量(或常量)连接起来组成一个逻辑表达式。
逻辑与,符号为“&&”,只有两个操作数都是真,结果才是真。 逻辑与操作属于短路操作,既如果第一个操作数能够决定结果,那么就不会对第二个操作数求值。对于逻辑与操作而言,如果第一个操作数是假,则无论第二个操作数是什么值,结果都不可能是真,相当于短路了右边。
例1(逻辑或):
#include <stdio.h>
int main() {
int i = 0, a = 0, b = 2, c = 3, d = 4;
i=a++||++b||d++;
printf("a=%d\nb=%d\nc=%d\nd=%d\n", a, b, c, d);
return 0;
}

结论:逻辑或(||)从左到右有一个为真(不为0)表达式为真,后边不在计算。
例2(逻辑与):
#include <stdio.h>
int main() {
int i = 0, a = 0, b = 2, c = 3, d = 4;
i = a++ && ++b && d++;
printf("a=%d\nb=%d\nc=%d\nd=%d\n", a, b, c, d);
return 0;
}

结论:按位与(&&)从左到右有一个为假(0)表达式为假,后边不再计算。
版权声明:本文为qq_43559301原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。