C语言入门_Day7 逻辑运算

目录

前言

1.逻辑运算

2.优先级

3.易错点

4.思维导图


前言

 算术运算用来进行数据的计算和处理;比较运算是用来比较不同的数据,进而来决定下一步怎么做;除此以外还有一种运算叫做逻辑运算,它的应用场景也是用来影响下一步代码的执行方式。

1.逻辑运算

逻辑运算主要是指三种运算方式,且运算(and),在C语言中是&&;或运算(or),在C语言中是||;非运算(not),在C语言中是

这里的&&就是与运算,又叫且运算||就是或运算,!就是非运算,接下来我们来一个一个一个认识他们:

true&&false;
true||false;
!true;

1.且运算&&

2.或运算||

3.非运算

且运算

&&是又叫“与运算”或者“且运算”,假设你是一个28岁的女生,那么“你28岁”并且“你是女生”,这句话表述就是真的。但是“你28岁”并且“你是男生”,这句表述就是假的。

且运算的运算方式就是,两个都为真才是真,其余情况都是假,所以true && true为真true && false为假。

我们定义两个变量bo_1和bo_2,并分别赋值true和true,然后进行且运算,并打印输出运算的结果。先填写数据类型bool:

bool bo_1=true;
bool bo_2=true;
printf("%d\n",bo_1 && bo_2);

打印结果

1

&&符号是两个&,也就是键盘上数字7上面的符号,输出这个符号是shift+7😁。

关于且运算,我们需要记住运算符是&&,以及运算规则,“都为真才是真

或运算

||运算又叫或运算,假设你是一个28岁的女生,那么“你28岁”或者“你是男生”,虽然前一句是真,后一句是假,但整个表述也为真,因为这里是“或者”,所以只要有一个条件是真的,整句话都是真的。

这时候只有“你不是28岁”或者“你是男生”,这句表述是假。因为前一句和后一句都是假的,整句话也就是假的了。

“或”运算只要参与运算的其中一个条件为真,就为真。除非两个条件都为假,才是假。

或运算符号||是两个连续的|,也就是反斜杠上面的符号,输出这个符号是shift+反斜杠健\😁

例如

bool bo_1=true;
bool bo_2=false;
printf("%d\n",bo_1||bo_2);

打印结果

1

 非运算的运算符号是一个英文感叹号!,假设你28岁,那么“你不是28岁”就是个假的表述,“你不是10岁”就是个真的表述。非运算里面,非真的结果为假,非假的结果为真。

 例如:

bool bo_1=true;
printf("%d\n",! bo_1);

打印结果

0

关于逻辑运算,我们只需要记住一个口诀

且运算&&的运算规律是,真真为真,其余为假

或运算||是,假假为假,其余为真

非运算!是,非真为假,非假为真

实际应用中经常把比较运算和逻辑运算联合在一起使用,比如我们要判断一个整数是否是个位数。

如果一个数大于0并且小于10,那么这个数是个个位数。翻译成C语言代码就是:

(num_a>0)&&(num_a<0)

就像数学中的规则一样,加括号的原因是需要提高优先级,加了括号的部分先算,不加括号的部分后算。

如果不加括号,这句代码就是从左至右依次运算,这样就无法得到我们想要的计算结果。

就像数学中的规则一样,加括号的原因是需要提高优先级,加了括号的部分先算,不加括号的部分后算。

这里就涉及到了编程代码中的优先级概念,我们接下来学习一下它。

2.优先级

 截止目前我们学过的运算符里面优先级最高的是括号(),也就是有括号的时候,最先计算括号里的。

优先级第二高的是乘法,除法和取余,当他们三个同时存在于一个表达式里面的时候,就从左到右依次计算,比如 

5*3/2%4

优先级第三高的是,加法和减法。这两个计算符号的优先级低于乘法,除法和取余,也就是如果同一个运算中既有乘法和除法, 也有加法和减法,是先计算乘除,再计算加减。这时候就是先计算右边的3*2,再计算4+6了。

4+3*2

优先级再低一级的就是比较运算符,比如大于,小于等等。

 优先级最低的是逻辑运算符,即最后才轮到他们。

对于优先级来说,我们可以简化记忆为,同一优先级中,从左至右依次运算。

不同运算符号之间的优先级高低是

1,计算;2,比较;3,逻辑

而在计算中,又是乘除高于加减。当然,最高优先级的符号是括号

然后是两个例外,第一个是赋值运算符=

赋值运算符的特点是,一定是符号右边完全计算完毕,才对左边的变量进行赋值,因此我们可以理解为,它的优先级最低

第二个例外,就是非运算符!

我们注意观察的话就会发现,上面的运算符都涉及到超过一个以上的变量或常量,而非运算符不一样,它只作用于一个变量或常量,因此它的优先级是很高的,仅次于括号

所以就我们学过的运算符号来说,整体优先级的高低顺序是:

1,括号();2,非运算!;3,乘除;4,加减;

5,比较运算;6,逻辑运算;7,赋值运算。

是不是感觉记起来很麻烦?在实际编程应用中,我们只需要记住两个点:

1,默认从左到右计算;2,多使用括号。

记不清楚这些优先级的时候,建议直接使用括号。这样我们就不会搞混了😁。

3.易错点

eg:

逻辑与运算 && —— 一假必假;

逻辑或运算 || ——  一真必真

4.思维导图

在撰写这篇文章时,我参考了《白纸编程》这个app的观点和思想,我要感谢他们对我的启发和帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/44484.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言:字符函数和字符串函数

往期文章 C语言&#xff1a;初识C语言C语言&#xff1a;分支语句和循环语句C语言&#xff1a;函数C语言&#xff1a;数组C语言&#xff1a;操作符详解C语言&#xff1a;指针详解C语言&#xff1a;结构体C语言&#xff1a;数据的存储 目录 往期文章前言1. 函数介绍1.1 strlen1.…

kube-prometheus 系列1 项目介绍

Prometheus 已经成为云原生监控的事实标准。整个生态包含诸多组件&#xff0c;为了简化安装部署和配置高可用等&#xff0c;社区开发了kube-prometheus项目。接下来用一系列文章介绍一下相关配置。 项目简介&#xff1a; kube-prometheus 是一个基于 Kubernetes 部署的 Prometh…

WebStrom 前端项目Debug

1. 正常启动前端项目 2. 配置webStrom的JavaScript Debugger 点击Edit Configurations添加avaScript Debug填写URL 为项目启动路径配置要Debug的浏览器-remote-allow-origins* &#xff08;最重要&#xff0c;否则唤起的是一个about:blank空白页面&#xff09; 3. 启动Debug模…

于vue3+vite+element pro + pnpm开源项目

河码桌面是一个基于vue3viteelement pro pnpm 创建的monorepo项目&#xff0c;项目采用的是类操作系统的web界面&#xff0c;操作起来简单又方便&#xff0c;符合用户习惯&#xff0c;又没有操作系统的复杂&#xff01; 有两个两个分支&#xff0c;一个是web版本&#xff0c;…

二维码智慧门牌管理系统:打造社区管理新格局

文章目录 前言一、精准数据支持的实现二、便捷办事流程的提升三、多元化服务渠道的拓展四、高效管理和优质服务的提供 前言 在科技的推动下&#xff0c;社区管理正在迎来一场革命性的变革。其中&#xff0c;二维码智慧门牌管理系统崭露头角&#xff0c;成为了社区管理的得力助…

python高级基础

文章目录 python高级基础闭包修饰器单例模式跟工厂模式工厂模式单例模式 多线程多进程创建websocket服务端手写客户端 python高级基础 闭包 简单解释一下闭包就是可以在内部访问外部函数的变量&#xff0c;因为如果声明全局变量&#xff0c;那在后面就有可能会修改 在闭包中的…

物联网智慧安防实训综合实训基地建设方案

一、系统概述 物联网智慧安防实训综合实训基地是一个为学生提供综合实践、培养技能的场所&#xff0c;专注于物联网技术与智慧安防应用的培训和实训。通过物联网智慧安防实训综合实训基地的建设和运营&#xff0c;学生可以在真实的环境中进行实践训练&#xff0c;提高其物联网技…

spring aop 的适用场景

Spring AOP&#xff08;Aspect-Oriented Programming&#xff09;是Spring框架提供的一种面向切面编程的机制&#xff0c;它可以通过在应用程序中定义横切关注点&#xff08;Cross-cutting Concerns&#xff09;&#xff0c;将这些关注点模块化&#xff0c;并将它们与核心业务逻…

CentOS下卸载node.js

目录 一、卸载 npm二、卸载node三、删除残留文件1. /usr/local/lib 下删除所有 node 和 node_modules文件夹2. /usr/local/include 下删除所有 node 和 node_modules 文件夹3. /usr/local/bin 下删除 node 的可执行文件 一、卸载 npm sudo npm uninstall npm -g 二、卸载node…

嵌入式入门教学——C51(中)

嵌入式入门教学汇总&#xff1a; 嵌入式入门教学——C51&#xff08;上&#xff09;嵌入式入门教学——C51&#xff08;中&#xff09;嵌入式入门教学——C51&#xff08;下&#xff09; 目录 七、矩阵键盘 八、定时器和中断 九、串口通信 十、LED点阵屏 十一、DS1302实…

Flink CDC系列之:Oracle CDC Connector

Flink CDC系列之:Oracle CDC Connector 一、依赖关系二、SQL 客户端 JAR三、设置Oracle1.对于非 CDB 数据库2.对于CDB数据库四、创建Oracle CDC table五、连接器选项六、局限性七、可用元数据八、特征1. Exactly-Once处理2.启动阅读位置3.单线程读取4.数据流源九、数据类型映射…

Spring 6.0官方文档示例(24): replace-method的用法

一、原始bean定义 package cn.edu.tju.study.service.anno.domain;public class MyValueCalculator {public String computeValue(String input) {return "you inputted: " input;}// some other methods... }二、replace bean定义 package cn.edu.tju.study.serv…

LED驱动型IC芯片的原理介绍

一、LED驱动器是什么 LED驱动器&#xff08;LED Driver&#xff09;&#xff0c;是指驱动LED发光或LED模块组件正常工作的电源调整电子器件。由于LED PN结的导通特性决定&#xff0c;它能适应的电源电压和电流变动范围十分狭窄&#xff0c;稍许偏离就可能无法点亮LED或者发光效…

设计模式十七:迭代器模式(Iterator Pattern)

迭代器模式&#xff08;Iterator Pattern&#xff09;是一种行为型设计模式&#xff0c;它提供了一种访问聚合对象&#xff08;例如列表、集合、数组等&#xff09;中各个元素的方法&#xff0c;而无需暴露其内部表示。迭代器模式将遍历元素和访问元素的责任分离开来&#xff0…

CentOS系统环境搭建(十三)——CentOS7安装nvm

centos系统环境搭建专栏&#x1f517;点击跳转 CentOS7.9安装nvm 文章目录 CentOS7.9安装nvm1.安装2.刷新系统环境3.查看所有node4.安装Node.js版本5.查看已安装版本号6.使用指定版本7.设置默认版本8.验证 在我们的日常开发中经常会遇到这种情况&#xff1a;手上有好几个项目&…

TCP粘包

TCP粘包&#xff08;TCP packet fragmentation and reassembly&#xff09;是指在使用TCP协议进行数据传输时&#xff0c;发送方发送的多个小的数据包&#xff08;消息&#xff09;在网络传输过程中会被合并成一个大的数据包&#xff0c;或者一个大的数据包被拆分成多个小的数据…

代码随想录算法训练营第53天|动态规划part14

8.19周六 1143.最长公共子序列 1035.不相交的线 53. 最大子序和 动态规划 详细布置 1143.最长公共子序列 题目&#xff1a;两个字符串&#xff0c;问最长的公共子序列多长&#xff08;不连续&#xff09; 题解&#xff1a; 1、dp[i][j]&#xff1a;长度为[0, i - 1]的字…

04_Redis与mysql数据双写一致性案例

04——redis与mysql数据双写一致性 一、canal 是什么 canal[ka’nel,中文翻译为水道/管道/沟渠/运河&#xff0c;主要用途是用于MySQL数据库增量日志数据的订阅、消费和解析&#xff0c;是阿里巴巴开发并开源的,采用Java语言开发&#xff1b; 历史背景是早期阿里巴巴因为杭州和…

大数据课程J3——Scala的类定义

文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 了解Scala的柯里化 Currying; ⚪ 掌握Scala的类定义; ⚪ 掌握Scala的样例类、option类; ⚪ 掌握Scala的隐式转换机制; 一、柯里化 Currying 柯里化(Currying)技术 Christopher St…

Java集合底层源码剖析-HashMap扩展

文章目录 LinkedHashMap有顺序的map数据结构概述基本属性构造方法Entry定义put()方法get()方法TreeMap 自定义排序规则的红黑树map数据结构put函数源码get获取函数源码如何保证有序性HashSetHashSet如何去重源码分析LinkedHashSetTreeSetIterator迭代器应对多线程并发修改的fai…