IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 初始C语言==>逻辑操作符典例分享 -> 正文阅读

[C++知识库]初始C语言==>逻辑操作符典例分享

介绍

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

逻辑与&逻辑或

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

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

逻辑与

符号: &&

同时为真才为真 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为假 ??

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-09-09 11:33:43  更:2021-09-09 11:34:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 19:47:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码