这是我参与11月更文挑战的第20天,活动详情查看:2021最后一次更文挑战
对于逻辑运算符&&和||都不陌生,逻辑运算(&&,||)不仅是在刷题中还是写项目中都经常用到,那么有很多人都不太熟悉这两种运算符。因为程序从左往右执行的,所以就造成了他们的短路特性。并且短路特性可以作为执行语句的约束条件。
||运算
表达式A || 表达式B
表达式成真条件: 满足表达式A和表达式B任意一个为真
短路原则: 如果表达式A为真,就不执行和判断表达式B,因为表达式A为真已经符合表达式A || 表达式B为真的条件
代码示例
示例1:
#include <stdio.h>
int main()
{
int a=1,b=0;
if(a++||b++);
printf("a:%d;b:%d",a,b);
return 0;
}
if(a++||b++);运算时,a=1,即if(1||b++);表达式A已经为真,则触发短路原则,不执行表达式B
输出:
a:2;b:0
示例2:
#include <stdio.h>
int main()
{
int a=0,b=0;
if(a++||b++);
printf("a:%d;b:%d",a,b);
return 0;
}
if(a++||b++);运算时,a=0,即if(0||b++);表达式A为假,不触发短路原则,执行表达式B,判断执行b++
输出:
a:1;b:1
&&运算
表达式A && 表达式B
表达式成真条件: 满足表达式A和表达式B都为真
短路原则: 如果表达式A为假,就不执行和判断表达式B,因为表达式A为假已经不符合表达式A && 表达式B为真的条件
代码样例
示例1:
#include <stdio.h>
int main()
{
int a=0,b=0;
if(a++&&b++);
printf("a:%d;b:%d",a,b);
return 0;
}
if(a++&&b++);运算时,a=0,即if(0&&b++);表达式A为假,触发短路原则,不执行表达式B
输出:
a:1;b:0
示例2:
#include <stdio.h>
int main()
{
int a=1,b=0;
if(a++&&b++);
printf("a:%d;b:%d",a,b);
return 0;
}
if(a++&&b++);运算时,a=1,即if(1&&b++);表达式A为真,不触发短路原则,执行表达式B,判断执行b++
输出:
a:2;b:1
总结
只要符合&&,||表达式成立的条件,就触发短路原则,省时又省力