C语言基础(8)之操作符(2)(详解)

news2024/10/6 4:31:14

目录

1. 操作符汇总表

2. 关系操作符

3. 条件操作符

4. 逗号表达式

5. 下标引用、函数调用和结构成员

5.1 下标引用

5.2 函数调用操作符

5.3 结构成员

6. 操作符的属性

6.1 操作符的优先级


        大家好呀!上篇文章中我们详细讲解了操作符的前半部分,这篇文章我将继续为大家讲解剩余的操作符知识及其作用。我依旧是采用 代码+讲解 的形式给大家详细的介绍一下剩余的各种操作符!

1. 操作符汇总表

        以下是各类型的操作符汇总表,方便大家后续对照学习呀!

(1) 算术操作符: +    -    *    /    %(取模操作符(取余),只适用于整数运算)
注:除法有:整数除法(如:9/2)、 浮点数除法(需要保证除数和被除数中至少有一个数是浮点数,如9.0/4)。

      

(2) 移位操作符(移动的是二进制位): >>(右移)           <<(左移)

        

(3) 位操作符(操作的是二进制位):  &    ^    |

        

(4) 赋值操作符: =     +=     -=     *=     /=     &=    ^=    |=      >>=     <<=

        

(5) 单目操作符:!                   逻辑反操作
                           -                   负值
                          +                   正值
                          &                   取地址
                        sizeof              操作数的类型长度(以字节为单位)
                          ~                   对一个数的二进制按位取反
                           --                  前置、后置--
                         ++                  前置、后置++
                           *                   间接访问操作符(解引用操作符)
                       (类型)               强制类型转换
注:2+3,+则为双目操作符,即有两个操作数,  单目操作符:只有一个操作数

        

(6) 关系操作符:   >
                              >=
                              <
                              <=
                              !=              用于测试“不相等”
                              ==             用于测试“相等”

        

(7) 逻辑操作符:   &&             逻辑与
                               ||               逻辑或 

        

(8) 条件操作符(三目操作符):exp1   ?   exp2  :  exp3
                                                 真           执行     不执行
                                                 假          不执行    执行         

               

(9) 逗号表达式:exp1, exp2, exp3, …expN

        

(10) 下标引用、函数调用和结构成员: [](下标引用操作符)   ()(函数调用操作符)   .    ->

        在上一篇文章中我们讲解至 单目操作符,那这篇文章小编就从 关系操作符 开始为各位老铁们讲解!

C语言基础(7)之操作符(1)(详解)icon-default.png?t=O83Ahttps://blog.csdn.net/L_Daniel/article/details/138674003如果老铁们还没了解过前面的操作符,可以点击上面的链接浏览学习呀!

2. 关系操作符

        关系操作符,通俗来讲就是比较两个操作数之间的大小、是否相等之间的关系。

        而关系操作符主要有6种:>        >=        <        <=        !=        ==

        这些操作符多用于判断语句、循环语句等。举例如下:

        对于 关系操作符 需要注意的两点:

                1. 在编程过程中要小心 == = 之间的写错而导致的错误。

                2. 关系操作符只能应用到合适的类型上,而不能应用到字符串、结构体等类型上。如字符串之间的比较应该用 strcmp 库函数。

3. 条件操作符

        条件操作符 又称 三目操作符(因为有三个操作数)。其操作规则为:exp1 ? exp2 : exp3 (其中exp 可以为表达式 或 常量)

对于 exp1 ? exp2 : exp3 有两种情况:


(1) 如果 exp1 的结果为真,则执行 exp2,而 exp3 不执行。


(2) 如果 exp1 的结果为假,则执行 exp3,而 exp2 不执行。

        可能很多老铁会好奇 条件操作符 有什么作用呢? 其实 条件操作符 的功能就类似于 if......else......语句。举例如下:

#include<stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	int m = 0;
	scanf("%d %d", &a, &b);
	/*if (a > b)
		m = a;
	else
		m = b;*/

	m = (a > b) ? a : b;

	printf("m = %d\n", m);

	return 0;
}

        即如果 实现找两个数之间的较大值 时,使用 条件操作符 会比使用 if...else...选择语句 看起来更整洁简练。

4. 逗号表达式

        逗号表达式为:exp1, exp2, exp3, …expN

        需要注意的是:逗号表达式中并没有限制操作数(表达式)的个数。因此逗号表达式是从左向右依次执行的,整个逗号表达式的结果是最后一个表达式的结果。

        举例如下:

#include<stdio.h>
int main()
{
	int a = 1;
	int b = 2;
	int c = (a > b, a = b + 10, a, b = a + 1);

	printf("%d\n", c);

	return 0;
}

5. 下标引用、函数调用和结构成员

5.1 下标引用

        下标引用操作符为:[]。而其主要是运用在数组中的。

        在数组中,数组的起始是有下标的,下标从0开始,通过 下标引用操作符  可以调用数组中的元素。

#include<stdio.h>
int main()
{
	int arr[10] = { 1,2,3,4,5 };
	//				0 1 2 3 4 5 6 7 8 9

	printf("%d\n", arr[2]); 

	return 0;
}

        在上面这个例子中,通过 下标引用操作符 调用了数组arr中的第三个元素,而arr 和 2 是 [] 的两个操作数。

5.2 函数调用操作符

        函数调用操作符为:()         也就是说,当我们想要调用函数时,必须带上函数调用操作符。这也印证了上一篇文章中说明的 sizeof是操作符而不是函数

        在上面这个例子中,小编调用了strlen这个库函数,因此 () 的操作数是: strlen 和 "abc"

        注:对于函数调用操作符来讲,最少有1个操作数。因为我们在调用函数时,函数名 已经是 函数调用操作符 的1个操作数了。

5.3 结构成员

结构成员的操作符是:.->        结构成员主要是运用在结构体上的,后续我们在讲解结构体时会讲解这两个操作符,这里小编就不细讲了哈!

6. 操作符的属性

        复杂表达式的求值有三个影响的因素。
                1. 操作符的优先级
                2. 操作符的结合性
                3. 是否控制求值顺序。
        两个相邻的操作符先执行哪个?取决于他们的优先级。如果两者的优先级相同,取决于他们的结合性。

6.1 操作符的优先级

        下面小编给大家整理出了各个操作符之间的优先级

        今天就先分享到这里吧,如果有什么不懂的地方欢迎留言一起探讨呀!

        欲知后事如何,且看下篇文章!

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

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

相关文章

【成长day】SuperPointSuperGlue(01): Superpoint论文算法学习与对应源码解析

两年前自己在实习公司做过superpoint相关的工作&#xff0c;当时是负责利用superpoint代替slam前端的特征点部分&#xff0c;来达到把特征点相关的处理放到推理计算平台上减轻CPU压力并且精度无损的目的&#xff0c;最终也是成功完成了这部分工作。但是当时没有留下任何的记录&…

YOLOv8 基于MGD的知识蒸馏

YOLOv8 基于MGD的知识蒸馏 接着上一篇我们介绍了YOLOv8的剪枝方案和代码&#xff0c;本篇文章将剪枝后的模型作为学生模型&#xff0c;剪枝前的模型作为教师模型对剪枝模型进行蒸馏&#xff0c;从而进一步提到轻量模型的性能。 Channel-wise Distillation (CWD) 问题和方法 …

IDM下载器如何下载网盘文件 IDM下载器支持哪些网盘

不用开通会员&#xff0c;也能高速下载网盘文件。使用IDM下载加速器&#xff0c;直接从服务器高速下载文件&#xff0c;轻松突破网盘限速。掌握IDM下载网盘文件的技巧&#xff0c;不仅可以节省会员费用&#xff0c;还可以大幅提高下载效率。有关IDM下载器如何下载网盘文件&…

【Linux:线程控制】

目录 线程的创建与等待&#xff1a; ​编辑 代码中tid是什么&#xff1f; 如何看待线程函数传参&#xff1f; ​编辑 ​编辑创建多线程&#xff1a;​编辑 终止多线程&#xff1a; 线程分离&#xff1a; 线程的创建与等待&#xff1a; void *threadrun(void *args) {int …

QT 中如何保存matlab 能打开的.mat数据矩阵!

Windows 上安装并使用 MATIO 库来保存 MATLAB 格式的 .mat 文件&#xff0c;需要进行以下步骤&#xff1a; 1. 下载并安装 CMake MATIO 使用 CMake 构建项目&#xff0c;因此你需要先安装 CMake。 前往 CMake 官网下载适用于 Windows 的安装程序并安装。 2. 下载 MATIO 库源…

Unity基础-矩阵-坐标转换结果的个人理解+数学公式说明

想做一些渲染效果做到头大&#xff0c;根本很多空白&#xff0c;完全无法实现&#xff0c;只能先暂停一下&#xff0c;重新学习矩阵 目录 Unity基础-数学矩阵 1.我们利用最简单的“转换矩阵”&#xff0c; 2.然后&#xff0c;视图坐标又是如何 3.最后就是剪裁坐标 3.1 - 其…

硬件设计-利用环路设计优化PLL的输出性能

目录 前言 问题描述 问题分析步骤 杂散源头排查 245.76M 参考相噪&#xff1a; 30.72M VCXO的相噪性能测试如下: 解决方案 前言 LMK04832是TI 新发布的低抖动双环去抖模拟时钟&#xff0c; 其最高输出频率可以到达3250MHz&#xff0c; 输出抖动极低&#xff0c;3200MHz…

MySQL 中的数据库锁和表锁

在 MySQL 数据库中&#xff0c;为了保证数据的一致性和完整性&#xff0c;会使用各种类型的锁。其中&#xff0c;数据库锁和表锁是比较常见的两种锁类型。 一、数据库锁和表锁的概念 &#xff08;一&#xff09;数据库锁 数据库锁是对整个数据库进行锁定&#xff0c;限制对数…

尝试从 http://pypi.doubanio.com/simple 这个索引源安装 webdriver 时出现了问题

问题如下&#xff1a; WARNING: The repository located at pypi.doubanio.com is not a trusted or secure host and is being ignored. If this repository is available via HTTPS we recommend you use HTTPS instead, otherwise you may silence this warning and allow …

ElasticSearch备考 -- 异步检索

一、题目 通过异步方式查询earthquakes索引下Magnitude大于5的数据 二、思考 正常的查询大家可能会用的多一点&#xff0c;这种异步查询为了可以数据量量比较大的查询在后台执行&#xff0c;不用同步等待结果&#xff0c;待执行完成在获取结果。 三、解题 Step 1、准备基础数…

【深度强化学习基础】(一)基本概念

【深度强化学习基础】&#xff08;一&#xff09;基本概念 一、概率论基础知识二、强化学习领域术语三、强化学习中两个随机性的来源&#xff1a;四、rewards以及returns五、Value Functions1.Action-Value Function Q π ( s , a ) Q_\pi(s,a) Qπ​(s,a)1.State-Value Funct…

Yolov8改进WIoU,SIoU,EIoU,α-IoU

1,IOU原理部分 IoU(Intersection over Union)是一种在计算机视觉领域常用的性能评估指标,尤其在目标检测和图像分割任务中。它通过计算预测边界框(预测框)与真实边界框(真实框)之间的交集面积与并集面积之比来衡量预测的准确性。IoU的值越接近1,表示预测框与真实框的重…

Error while loading conda entry point: conda-libmamba-solver

问题 解决方法 conda install --solverclassic conda-forge::conda-libmamba-solver conda-forge::libmamba conda-forge::libmambapy conda-forge::libarchive

C0015.Clion中开发C++时,连接Mysql数据库方法

安装mysql数据库 CMakeLists.txt中配置mysql数据库 # 先指定mysql数据库的安装位置 include_directories("C:/Program Files/MySQL/MySQL Server 8.0/include") link_directories("C:/Program Files/MySQL/MySQL Server 8.0/lib") link_libraries(libmysq…

Python | 使用Seaborn绘制KDE核密度估计曲线

核密度估计&#xff08;KDE&#xff09;图&#xff0c;一种可视化技术&#xff0c;提供连续变量概率密度的详细视图。在本文中&#xff0c;我们将使用Iris Dataset和KDE Plot来可视化数据集。 什么是KDE图&#xff1f; KDE图&#xff0c;全称核密度估计图(Kernel Density Est…

智慧农业案例 (二)- 智能化灌溉系统

橙蜂智能公司致力于提供先进的人工智能和物联网解决方案&#xff0c;帮助企业优化运营并实现技术潜能。公司主要服务包括AI数字人、AI翻译、领域知识库、大模型服务等。其核心价值观为创新、客户至上、质量、合作和可持续发展。 橙蜂智农的智慧农业产品涵盖了多方面的功能&…

回归预测|基于哈里斯鹰优化最小二乘支持向量机的数据回归预测Matlab程序HHO-LSSVM 多特征输入单输出含基础程序

回归预测|基于哈里斯鹰优化最小二乘支持向量机的数据回归预测Matlab程序HHO-LSSVM 多特征输入单输出含基础程序 文章目录 一、基本原理一、基本原理二、HHO-LSSVM的流程三、优缺点四、应用场景 二、实验结果三、核心代码四、代码获取五、总结 一、基本原理 HHO-LSSVM回归预测结…

校园资源共享新方案:基于SpringBoot的实现

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多学生、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常适…

Vue之父尤雨溪成立VoidZero公告,已获得 460 万美元种子轮融资

VoidZero Inc. 创立公告 摘要&#xff1a; 我创立了 VoidZero Inc.&#xff0c;这是一家致力于构建开源、高性能、统一的开发工具链&#xff0c;服务于 JavaScript 生态系统的公司。我们已获得 Accel 领投的 460 万美元种子轮融资。 十五年前&#xff0c;当我开始使用 JavaSc…

哈尔滨自闭症学校寄宿条件与优势解析

自闭症儿童的希望之光&#xff1a;广州星贝育园寄宿制学校深度解析 在当今社会&#xff0c;自闭症儿童作为一群需要特别关注和照顾的群体&#xff0c;其教育与康复问题日益受到社会各界的重视。自闭症儿童不仅需要专业的康复训练&#xff0c;还需要一个稳定、温馨且充满爱的环…