逻辑运算的短路特性(&&,||)

发布时间:2024年01月18日


||运算

表达式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


总结

只要符合&&,||表达式成立的条件,就触发短路原则,省时又省力

文章来源:https://blog.csdn.net/qq_20185737/article/details/135662959
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。