当前位置: 首页 > news >正文

了解常见C语言操作符

hello 大家好欢迎来到我的博客


之前我们认识了常见的数据类型,同时也学会了如何让使用变量。

认识了数据,接下来就要学习操作数据的工具——操作符

此篇给大家讲解常见操作符,其他复杂操作符后续给大家单独讲解

一、什么操作符

C 语言标准中,操作符(Operator)是:

语法上的终结符(token),用于指定对一个或多个操作数(operand)执行的运算或操作,这些操作包括计算、赋值、类型转换、内存访问、表达式求值控制等。

比如我们常见的+=&&都属于操作符。

操作符与操作数结合,构成表达式(expression),每个操作符的行为、优先级、结合性、类型转换规则,均由标准明确规定。

二、操作数与表达式

2.1 操作数

  • 标准定义:操作符执行运算时作用的数据实体,是运算的 “输入值”。
  • 常量操作数:如53.14'A'
  • 变量操作数:如 age、num
  • 表达式操作数:如:(a+b)*6中操作数 :a、b、(a+b)、6 、(a+b)*6 表达式本身也可以作为操作数

2.2 表达式

  • 标准定义:由操作符 + 操作数按语法规则组合而成,能够计算出一个值的语法单元。
类型示例说明
算术表达式a + bx * 3用算术操作符组合,结果为数值
关系表达式a > bx == 5用关系操作符组合,结果为0(假)或1(真)
逻辑表达式a > b && x < 10用逻辑操作符组合,结果为01,存在短路求值
赋值表达式a = 10x += 3用赋值操作符组合,结果为赋值后的值
逗号表达式a = 1, b = 2, a + b用逗号操作符组合,结果为最后一个表达式的值

三、常见操作符

(一) 算数操作符

+ - * / %

+、-、* 操作符与数学中使用方法无区别,这里不为大家做过多的了解。

(1)/

  • 整数相除,舍去小数,只取整数部分
  • 如果希望得到浮点数,两个运算数中至少有一个浮点数

例如:5/2=2(5/2=2.5 舍去小数0.5); 5.0/2=2.5;5/2.0=2.5;

  • 结果的符号 :同号得正,异号得负
  • 除数不能为 0

(2)%

  • 取模/余运算符:返回两个整数相除的值。

注意:%能用于整数,不能用于浮点数

  • 结果的符号:取决于被除数(也就是第一个数)
  • 除数不能为 0

例如:11%5=1(11/5=2余1 取余结果为1);11%-5=2 ;-11%5=-2;

(二)赋值操作符

= += -= *= /= %= <<= >>= &= |= ^=

  • 连续赋值:a=b=c+3
  • 复合赋值:先运算再赋值

例如:a=a+10 等价于 a+=10;b=b*5 等价于 b*=5;

(三)单目操作符

常见单目操作符: ++ -- + -sizeof

单目操作符仅有一个操作数

(1)自增:++

  • 前置++:++a 先++后使用

  • 后置++:a++ 先使用后++

注:当a++与++a单独使用时 a++与++a 一样例如:int a=5 a++ 等于 ++a

(2)自减:

  • 前置--:--a 先--后使用
  • 后置--:a-- 先使用后--

同上,这里不再给大家做过多解释。

(3) 正与负 : + -

(4)sizeof 操作符:求类型 / 变量所占字节,是操作符不是函数

(四)关系操作符

> < >= <= == !=

常用来判断两个值的关系

注意

  • C语言中关系的结果只有两种:真 —1 假—0
  • ==是判断相等
  • =是赋值

例如:a==5 判断a是否等于5, a=5 给变量a赋值为5

(五)逻辑操作符

&& || !

  • 用于组合条件的判断,结果为1或0

(1)逻辑与 &&

  • &&判断的是“并且”关系
  • 两边都为真(1),结果才为真(1),只要有一个条件为假(0),结果就为假(0)
  • 短路:在A && B中,如果表达式 A 的结果为假(0),那么编译器会直接判定整个表达式为假,不再去执行或计算表达式 B

(2)逻辑或 ||

  • 判断的是“或者”关系
  • 只要有一个条件为真(1),结果就为(1);两边都为假(0),结果才为假(0)
  • 短路:如果||左边的表达式结果为真(1),那么右边的表达式就不会再执行,整个表达式的结果直接为 1。

(3)逻辑非

改变单个表达式的真假

  • 如果操作数为真(非0),结果为假(0);如果操作数为假(0),结果为真(1)

(六)条件操作符

条件操作符是C语言中“唯一 一个三目操作符”(需要三个操作数)

表达式1 ? 表达式2 : 表达式3

  • 如果表达式1为真,表达式2结果是整个表达式结果
  • 如果表达式1为假,表达式3结果是整个表达式结果

(七)逗号操作符

表达式1, 表达式2, ..., 表达式n

  • 从左至右一次执行每个表达式,整个逗号表达式的结果是最后一个表达式的值

(八)下标引用、函数调用和结构体成员访问操作符

  • 下标引用操作符[]:用于数组。例如arr[5][]就是操作符,arr5是操作数。
  • 函数调用操作符():用于调用函数。例如printf("Hello")()就是操作符
  • 结构体成员访问.:通过结构体变量访问成员。例如stu.name->:通过结构体指针访问成员。例如p_stu->name。(结构体篇详细讲)

四、操作符的优先级与结合性

敲黑板这个知识点非常重要!!!

  • 优先级:当一个表达式中出现了多个运算符时,决定运算符谁先算
  • 结合性(左结合/ 右结合):当多个优先级相同的运算符连续出现时,决定从哪边算

左结合:从左至右算

右结合:从右至左算

  • 常用优先级与结合性:
优先级运算符结合性操作符名称
1()[]->.左结合括号、数组、结构体成员
2!++--*&sizeof右结合逻辑非、自增减、指针、取地址、求字节大小
3*/%左结合乘、除、取余
4+-左结合加、减
5<<=>>=左结合大小比较
6==!=左结合相等、不等判断
7&&左结合逻辑与
8||左结合逻辑或
9?:右结合三目条件运算
10=+=-=*=/=右结合赋值运算
11,左结合逗号运算

大家可以通过这个网站进行全面的学习:https://en.cppreference.com/w/c/language/operator_precedence

优先级小tips:

在写代码的过程中不确定优先级就加()来控制运算顺序

此篇到这里就结束了,感谢大家的观看,感谢与我共同进步的你们!

http://www.jsqmd.com/news/893051/

相关文章:

  • CAXA 焊接符号、焊缝符号
  • 项目介绍 基于Python的招聘岗位信息推荐系统设计与实现(含模型描述及部分示例代码)专栏近期有大量优惠 还请多多点一下关注 加油 谢谢 你的鼓励是我前行的动力 谢谢支持 加油 谢谢
  • 关于大学专业课如何去正确学习
  • RK3588 适配 WiFi 模组 (SDIO)
  • 通过curl命令快速测试Taotoken多模型API连通性与响应
  • Prompt工程×前端渲染×实时协同,Lovable写作助手开发全流程解析,含GitHub可运行代码库
  • Matlab肺结节分割(肺结节提取)源程序,也有GUI人机界面版本。使用传统图像分割方法,非深度学习方法。使用LIDC-IDRI数据集
  • 从记录到智能:企业考勤管理系统平台的技术演进与选型指南
  • 为openclaw配置taotoken作为自定义大模型供应商的详细步骤
  • 网络层——ip地址
  • 15. Python 类型提示与静态检查 深度解析
  • 大模型分布式训练技术深度解析:从 ZeRO 到 3D 并行的全面指南
  • claude code 笔记
  • RK3588 适配 WiFi 模组 (USB)
  • 从VGA到Optimus:手把手拆解Linux DRM中DUMB/PRIME缓冲区的设计哲学与实战选择
  • 为什么90%的AI Agent物联网项目卡在数据对齐?资深架构师首曝4层语义映射框架与开源工具链
  • 猜谜王中王!免费谜语大全 API,海量谜题一键获取,益智娱乐双丰收
  • 跨平台资源下载终极指南:3分钟掌握res-downloader免费神器
  • 0.9V写入电压与万亿次耐久性:BEOL兼容AOS-FEFET如何革新嵌入式缓存
  • cmd命令行启动独立的chrome浏览器
  • 知网AIGC疑似度80%?吐血盘点市面七大论文降AI工具,保姆级测评来啦! - 殷念写论文
  • 3步掌握Pyfa:为什么这是EVE玩家必备的离线装配神器?
  • Python数据分析三剑客:NumPy、Pandas、Matplotlib
  • 超低功耗MCU的轻量级HW-NAS:硬件约束下的微型CNN自动设计
  • 6G赋能智能交通:车联网(V2X)的进化与新可能
  • 构建生产级RAG流水线:从架构设计到性能优化的实战指南
  • Vue电商商城架构解析:基于状态管理的现代化前端实现
  • 出口UPS十大品牌榜单!持证出海,东南亚中东项目通用
  • 大模型产品经理进阶指南:从零基础到实战,新手到专家的完整学习路径,
  • 毕业答辩 PPT 提速优选! 9 款实力派 AI 演示文稿工具全维度实测