初始C语言==>逻辑操作符典例分享

本文介绍了C++中的逻辑操作符逻辑与(&&)和逻辑或(||),通过代码示例展示了它们在不同情况下的行为。逻辑与要求两边表达式均为真才为真,而逻辑或只要一侧为真即为真。文章通过四个逐步复杂的情况分析了逻辑操作符在前置++与后置++中的应用,帮助读者深入理解这些操作符的工作原理。
摘要由CSDN通过智能技术生成

介绍

逻辑操作符是双目操作符中的一种,它起到一种判断作用,只有两边表达式为真或有一个为真才会执行。
这个操作符的关系有点绕,我们需要很清楚地知晓它的生效逻辑,方便我们在后续代码学习中更好的使用这个操作符

逻辑与&逻辑或

我们需要认识的逻辑操作符就是以下两个

  • 逻辑与 &&
  • 逻辑或 ||

逻辑与

符号: &&

同时为真才为真 1
有一个为假即为假

逻辑或

符号: ||

同时为真==>真
同时为假==>假
一真一假==>真

简单代码演示

先用一个简单的代码示例来了解这两个操作符

#include<stdio.h>

int main()
{
	int a = 1;
	int b = 0;
	if (a && b)
	{
		printf("hehe\n");
	}
	return 0;
}

这个代码的执行结果如下图所示
在这里插入图片描述
a为真,b为假的情况下,逻辑与操作符是不会打印的
当我们把它换成逻辑或的时候
代码就会打印hehe
在这里插入图片描述
同样的,当a和b两个都为0的时候,逻辑与和逻辑或都不会打印
当a和b两个都为非0,即都为真的情况下,逻辑与和逻辑或都会打印

稍微复杂的逻辑操作符应用

情况一

让我们来看看以下这个稍微复杂的代码
别急着往下滑,思考一下这个代码的a,b,c,d打印的结果分别是什么?

#include<stdio.h>
int main()//情况1
{
	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;
}

常见错误答案1,3,3,5

答案揭晓:
a,b,c,d分别打印了1,2,3,4
在这里插入图片描述
这是为什么呢?
这里需要我们对前置++与后置++的关系有所了解

前置++与后置++

  • 前置++ 先++再使用
  • 后置++ 先使用再++

了解了这个了,让我们继续分析上述代码
首先是第一个a++,a原本等于0,为假,在这里逻辑与操作符已经判断为假,操作符不执行
但这里我们的a已经进入计算,所以a++仍会执行,a=1
因为第一个逻辑与操作符判断为假不执行,返回的是假(即返回0)
所以第二个逻辑与也判断为假,不执行&&右边的代码
小结:
这串代码中只执行了a++,其他bcd没有执行,不受影响
答案就是1,2,3,4

情况二

先思考以下代码的答案,再往下滑~

int main()//情况2
{
	int i = 0, a = 1, 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;
}

答案揭晓:
在这里插入图片描述
这里又是怎么一回事呢?
第一个逻辑与中a=1,b=3(前置++先加加后使用,b=2+1=3)
操作符判断两个都为真,两个都执行
第二个逻辑与 也判断为真,执行

注意,逻辑与中需要判断是否为真
如果前面为假,那后续都为假,无需执行后续内容
如果前面为真,需要继续判断后面的是否为真

结果即为
a=1++=2,b=++2=3,c=3,d=4++=5

情况三

接着我们看逻辑或,同样的前置条件

int main()//情况3
{
	int i = 0, a = 1, 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;
}

这次我们先分析一波

逻辑或是只要一个为真即为真,两个都为假才为假
所以只要第一位为真,后续的就不执行
第一位为假,需要继续执行判断后面的是否为假

这个代码中,因为第一个a=1已经为真,返回的是真,所以后续的不用判断
++b和d++都不会执行
结果如下
在这里插入图片描述

情况四

int main()//情况4
{
	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;
}

这里第一位a=0判断为假,后续的需要继续执行判断是否为真
因为b=3为真,式子为真,所以不执行后面的d++
结果如下:
在这里插入图片描述

结语

不知你是否看懂了上面的4个案例
如果这对你有帮助,还请点个赞再走吧!


  1. 非0为真,0为假 ↩︎

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

慕雪华年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值