【C语言】关系、条件、逻辑操作符

news2024/11/14 6:00:46

1. 关系操作符

在C语言中用于比较的表达式称为关系表达式,而其中使用的运算符就称为关系运算符,主要有:

  • >大于运算符
  • <小于运算符
  • >=大于等于运算符
  • <=小于等于运算符
  • ==相等运算符
  • !=不相等运算符

比如:

a < b;
a > b;
a <= b;
a >= b;
a == b;
a != b;

关系表达式通常返回010一般表示假,1一般表示真,比如2 > 1返回12 < 1返回0,关系表达式通常用于分支与循环结构

*注意:===是不同的,前者用来判断相等,后者是用来赋值。

2. 条件操作符

条件操作符也叫三目操作符,形式如下:

a1 ? a2 : a3

条件操作符的逻辑为:如果a1为真,a2计算,得到的结果就为整个表达式的结果,如果a1为假,a3计算,结果也为整个表达式的结果。

比如:

int main()
{
	int a = 6;
 	int b = 0;

	b = a > 3 ? 1 : 2;
 	printf("%d\n", b);
 	return 0;
}

这里我们给a赋值为6,b的结果为后面的表达式赋值,这里的表达式意思就是:如果a > 3,表达式结果为1,那么b就赋值为1,如果 a <= 3, 那么表达式结果为2,b被赋值为2。

3. 逻辑操作符

逻辑操作符提供逻辑判断,可以构建更复杂的表达式,有以下几个:

  • !逻辑取反运算符(改变表达式真假)
  • &&与运算符(两侧表达式为真,则整个表达式为真,否则为假)
  • ||或运算符(两侧至少有一个表达式为真则为真,否则为假)

3.1 逻辑取反运算符:!

在这里插入图片描述
比如这里有一个变量a,如果a为假要做一件事,那就可以这样:

int mian()
{
	int a = 0;
	if(!a)
	{
		printf("hello\n");
	}
	return 0;
}

3.2 与运算符:&&

在这里插入图片描述
我们可以把与运算符理解为并且的意思,它也是一个双目操作符,使用的方式就是:

表达式1 && 表达式2

&&两边的表达式都为真,整个表达式才为真,只要有一个是假,整个表达式就为假。

比如下面的例子:

int main()
{
	int a = 5;
	int b = 10;
	if(a > 4 && b < 20)
	{
		printf("hello\n");
	}
	return 0;
}

这段代码a赋值为5, b赋值为10,如果a > 4并且b < 20表达式为真,所以进入if语句。

3.3 或运算符:||

在这里插入图片描述
我们可以把||或运算符理解为或者的意思,它也是个双目操作符,使用的方式就是:

表达式1 || 表达式2

||两边的表达式只要有一个为真,整个表达式的结果就为真,如果都为假,则表达式结果为假。

比如:

int main()
{
	int a = 5;
	int b = 0;
	if(a > 4 || b > 1)
	{
		printf("hello\n");
	}
	return 0;
}

在这段代码中,a赋值为4,b赋值为0,满足左边表达式a > 4,即使不满足右边表达式,那么整个表达式仍为真,进入if语句。

3.4 短路

逻辑运算还有一个特点,那就是总是先对左侧表达式求值,再对右边表达式求值,也就是从左向右计算,所以如果左边表达式满足条件,则不再对右边表达式求值,这种情况叫做“短路”。

比如&&与运算符:

if(a > 4 && b < 20)

如果a > 4,再运算后面的b < 20,如果a > 4不满足,则不会运算后面的b < 20,表达式结果直接为假。

再比如||或运算符:

if(a > 4 || b > 1)

如果左边的a > 4已经满足,则不会计算后面的 b > 1,只有左边不满足,才会继续运算后面的表达式。

这种仅根据左表达式的结果就能得到整个表达式的结果,不再对右表达式计算的运算就称为短路求值

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

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

相关文章

安卓将子模块打aar包,并将其远程依赖打包进去

生成 AAR 包 在Android Studio Terminal 窗口输入以下命令&#xff1a; ./gradlew :monitor:assembleRelease把 monitor 换成你子模块的名称&#xff0c;不出意外的话 就会在下面目录生成相应aar文件 注意&#xff1a;如果你的Java运行环境是Java 8 则在老一点的AS上 可以运…

【Stable Diffusion】(基础篇九)—— 扩展

扩展 本系列博客笔记主要参考B站nenly同学的视频教程&#xff0c;传送门&#xff1a;B站第一套系统的AI绘画课&#xff01;零基础学会Stable Diffusion&#xff0c;这绝对是你看过的最容易上手的AI绘画教程 | SD WebUI 保姆级攻略_哔哩哔哩_bilibili 添加一些SD对应的扩展&am…

【前端 22】使用Nginx部署前端项目

使用Nginx部署前端项目 在前端开发中&#xff0c;将项目打包并部署到服务器上是一个常见的需求。Nginx以其高性能、稳定性和丰富的特性成为了前端项目部署的热门选择。下面&#xff0c;我将详细介绍如何使用Nginx部署一个前端项目&#xff0c;并展开讲解Nginx的目录结构以及如何…

第TR4周:Transformer中的位置编码详解

在实施 NLP 解决方案时&#xff0c;循环神经网络&#xff08;RNN&#xff09;具有处理序列顺序的内置机制。Transformer则是引入来位置编码机制来保存文本中字符的位置信息。 位置编码定义 位置编码记录了文本中字符的位置信息&#xff0c;这里位置信息的记录不使用单个数字&am…

quartz实现动态定时任务管理

1、需求 配置中&#xff0c;固定周期&#xff0c;单位秒。需要任务每间隔这个秒数 执行进行统计。 2、分析 要实现这个需求&#xff0c;之前一直在用的多线程方案也行。详见 既然前面用quartz 根据cron表达式上一次和下一次的执行时间判断。 本次就用quartz来实现动态任务。…

学生管理系统之数据库设计与开发

学生管理系统之数据库设计与开发 使用SQL创建表格 QT上写逻辑 创建一个类 <

Xilinx FPGA 原语解析(一):IBUFDS_GTE3 差分时钟输入缓冲器

目录 1.使用说明 2.实例化代码 3.参数解释 4.端口连接 1.使用说明 IBUFDS_GTE3 是Xilinx FPGA 中用于高速接口的差分时钟信号输入缓冲器。 BUFDS_GTEx&#xff0c;x2/3/4&#xff08;不同系列的FPGA x的值不同&#xff09;&#xff0c;其中UltraScale使IBUFDS_GTE3…

内网穿透--meterpreter端口隧道

实验背景 通过公司带有防火墙功能的路由器接入互联网&#xff0c;然后由于私网IP的缘故&#xff0c;公网无法直接访问内部主机&#xff0c;则需要通过已连接会话&#xff0c;代理穿透访问内网主机服务。 实验设备 1.路由器一台 2.内网 Win 7一台 3.公网 Kali 一台 4.网络 …

Java算法和集合

1. 排序 1.1. 排序概述 1.2. 冒泡排序 整个数列分成两部分&#xff1a;前面是无序数列&#xff0c;后面是有序数列初始状态&#xff0c;整个数列都是无序的&#xff0c;有序数列为空如果一个数列有n个元素&#xff0c;至多需要n-1趟循环才能保证数列有序每一趟循环可以让无序…

Python:下载数据集

打开网站&#xff1a;搜索 ​​​​​​https://www.kaggle.com 直接下载即可&#xff08;要登陆注册哦&#xff09;,下载完成一定要放到桌面哦&#xff0c;因为读取的是当前目录 在网页上打开上一篇文章所讲的HelloWorld&#xff0c;如果没有安装请跳转 http://t.csdnimg.cn…

视频教程 - 自研Vue3 Tree组件高级功能:虚拟滚动新增节点实现自动滚动

感谢小伙伴们对本套自研vue3 tree组件教程的关注&#xff0c;在前一篇媲美Element Plus JuanTree终极实战&#xff1a;虚拟滚动的功能演示中发现了小bug&#xff0c;特地整理了相关录屏来说明怎么一步步解决bug的&#xff0c;来回馈小伙伴们的支持。 Tree组件高级功能&#xff…

Photoshop Ps2024苹果(mac)版安装下载,(附win/mac下载链接)

一、简介 PS2024即Photoshop 2024&#xff0c;是一款由Adobe公司开发的图像处理软件。其部分功能介绍如下&#xff1a; - 生成式AI绘图&#xff1a;将Photoshop和生成式AI两个强大的成像引擎结合&#xff0c;用户可通过文本提示在Photoshop内部生成内容&#xff0c;并使用Phot…

基于cubeMX的STM32开启SPI及DMA

1、打开cubeMX后&#xff0c;设置SPI&#xff0c;如下图 2、设置SPI的DMA中断 3、DMA设置 4、SPI的GPIO设置 5、最后生成代码&#xff0c;可以看到工程文件中有dma.c和spi.c 6、使用举例&#xff1a;如幻彩灯的亮灭使用SPIDMA产生的信号波形来控制&#xff0c;在ws2812.c中调用…

Harbor镜像仓库(v2.10.3)附相关自定义配置

目录 一. 环境准备 二. 部署安装 三. 修改网段的方法 四. 配置开机与伴随docker启动 五. 基础使用 1. 创建一个用户 2. docker登录用户 3. 创建项目 4. 推送镜像 六. 自制证书配置HTTPS 一. 环境准备 Harbor 是一个开源的企业级 Docker 镜像仓库&#xff0c;提供了许…

1.4亿中文知识图谱导入Nebula Graph快速体验

1. 史上最大规模的中文知识图谱 Yener 开源了史上最大规模的中文知识图谱—— OwnThink&#xff08;链接&#xff1a;​​https://github.com/ownthink/KnowledgeGraphData​​&#xff0c;数据量为 1.4 亿条。数据以 ​​(实体, 属性, 值)​​ 和 ​​(实体, 关系, 实体)​​…

AI大模型技术的四大核心架构分析

AI大模型技术的四大核心架构演进之路 随着人工智能技术的飞速发展&#xff0c;大模型技术已经成为AI领域的重要分支。 深度剖析四大大模型技术架构&#xff1a;纯粹的Prompt提示词法、Agent Function Calling机制&#xff0c;RAG&#xff08;检索增强生成&#xff09;及Fine-…

基于若依框架开发的Spring Boot+Vue的MES(生产制造执行系统)是一种专为中小型工厂设计的ERP(企业资源计划)系统

基于若依框架开发的Spring BootVue的MES&#xff08;生产制造执行系统&#xff09;是一种专为中小型工厂设计的ERP&#xff08;企业资源计划&#xff09;系统。这个系统旨在帮助这些工厂实现更有效的生产管理、数据收集与分析、设备监控以及质量管理等&#xff0c;从而提高生产…

VMWare虚拟机如何连接U盘

检查配置 1&#xff09;Win R键&#xff0c;输入services.msc&#xff0c;打开服务。 2&#xff09;将AMware USB Arbitration Services 服务开启&#xff0c;并设置为自动启动&#xff1b; 连接U盘 目前作者了解有两种连接方式&#xff0c;如有其他连接方式&#xff0c;欢…

2024关于日本AI 领域TOP12 的大学介绍

1.东京大学 &#xff08;The University of Tokyo&#xff09; 位于&#xff1a;日本东京都文京区本郷七丁目3 番1 号 网址&#xff1a;東京大学 东京大学也被称为UTokyo 或东大&#xff0c;是日本第一所国立大学。作为领先的研究型 大学&#xff0c;东京大学提供基本所有…

JavaFX布局-SplitPane

JavaFX布局-SplitPane 常用属性orientationpaddingdividerPositionsdisable 实现方式Java实现fxml实现 一个拆分至少两个区域的容器支持水平、垂直布局可以拖动区域的大小初始化大小通过比例设置[0,1] 常用属性 orientation 排列方式&#xff0c;Orientation.VERTICAL、Orien…