网站首页 > 技术文章 正文
1运算符和表达式
C语言运算符是说明特定操作的符号,它是构造C语言表达式的工具。C语言的运算异常丰富,除了控制语句和输入输出以外的几乎所有的基本操作都作为运算符处理。除了常见的三大类,算术运算符、关系运算符与逻辑运算符之外,还有一些用于完成特殊任务的运算符,比如位运算符。
算数运算符:用于算数运算,包括+、-、* 、/等。
关系运算符:用于比较运算,包括>、<、==、!=等。
逻辑运算符:用于逻辑运算,包括 &&、||、!三种。
位操作运算符:按二进制位对位运算,包括&、|、~、<<等。
赋值运算符:用于赋值运算,包括=、+=、&=等。
条件运算符:三目运算符,用于条件求值(?:).
逗号运算符:用于把若干表达式组合成一个表达式(,)。
指针运算符:用于取内容*和用于取地址&。
求字节数运算符:用于计算数据类型所占的字节数sizeof。
特殊运算符:()、[]、成员(->,.)等。
1.2运算符优先级
A.函数计算优先。
B.其次是强制类型转换。
C.自增、自减和取反次之。
D.先乘除再加减。
E.有括号先算括号内的。
注:表达式中出现连续两个运算符时最好用空格隔开,如a+++b要写成:a++ +b或a+ ++b。同一优先级的运算符,运算次序由结合方向所决定。
也可以这样记:!> 算术运算符 > 关系运算符 > && > || > 赋值运算符
2数据类型转换
2.1强制类型转换:就是显示的将表达式转换成所需类型。
方式1:(类型名)(表达式).
方式2:(类型名)表达式.
例:强制类型转换。
注:强制类型转换不会改变原来的变量和表达式的类型属性,只是转换成所需类型使用。
2.2隐含类型转换:整型、单精度型和双精度型的不同数值类型可以混合运 算,在运算过程中就有隐式类型转换。
隐式类型转换的规则就是:从低向高转换,例如char和short可以转 换为int。
3算术运算符与算术表达式
3.1基本算术运算符:包括+、-、*、/、%五个运算符。
3.2特殊的算术运算符:自加和自减。
前缀形式:先对运算对象自增或自减,再引用运算对象的值作为表达式 的值。
后缀形式:先引用运算对象的值作为表达式的值,再对运算对象自增或 自减。示例:
++a 等价于a=a+1,--a等价于a=a-1;
a++ 等价于a=a+1,a--等价于a=a-1;
注:可以看出单独使用时没有区别,但是在表达式中对表达式影响不同。
示例代码:
4赋值运算符与赋值表达式
4.1简单的赋值运算符
简单赋值的作用就是将一个表达式的值赋给一个变量存储起来,例如a=4;
注:赋值运算的左边必须是变量;
赋值运算优先级比较低,仅优先于,;
4.2复合赋值运算符
就是把运算和赋值结合在一起,例如+=、-=等。
例如:m+=3 等价于 m=m+3;
4.3赋值表达式的运算
使用表达式应该注意的情况:
4.3.1复合的赋值运算符。
示例代码:
5.逻辑运算符
逻辑运算符是根据表达式的值来返回真值或是假值。其实在C语言中没有所谓的真值和假值,只是认为非0为真值,0为假值。
符号功能
例如:
当表达式进行&&运算时,只要有一个为假,总的表达式就为假,只有当所有都为真时,总的式子才为真。当表达式进行||运算时,只要有一个为 真,总的值就为真,只有当所有的都为假时,总的式子才为假。逻辑非(!)运算是把相应的变量数据转换为相应的真/假值。若原先为假,则逻辑非以后为真,若 原先为真,则逻辑非以后为假。
还有一点很重要,当一个逻辑表达式的后一部分的取值不会影响整个表达式的值时,后一部分就不会进行运算了。例如:
因为a=2,为真值,所以不管b-1是不是真值,总的表达式一定为真值,这时后面的表达式就不会再计算了。
6 关系运算符
关系运算符是对两个表达式进行比较,返回一个真/假值。
符号功能
这些运算符大家都能明白,主要问题就是等于==和赋值=的区别了。
一些刚开始学习C语言的人总是对这两个运算符弄不明白,经常在一些简单问题上出错,自己检查时还找不出来。看下面的代码:
if(Amount=123) ……
很 多新人都理解为如果Amount等于123,就怎么样。其实这行代码的意思是先赋值Amount=123,然后判断这个表达式是不是真值,因为结果为 123,是真值,那么就做后面的。如果想让当Amount等于123才运行时,应该if(Amount==123) ……
7 条件运算符
条件运算符(?:)是C语言中唯一的一个三目运算符,它是对第一个表达式作真/假检测,然后根据结果返回两外两个表达式中的一个。
<表达式1>?<表达式2>:<表达式3>
在运算中,首先对第一个表达式进行检验,如果为真,则返回表达式2的值;如果为假,则返回表达式3的值。
例如:
8 逗号运算符
C语言中,多个表达式可以用逗号分开,其中用逗号分开的表达式的值分别结算,但整个表达式的值是最后一个表达式的值。
假设:
对于第一行代码,有三个表达式,用逗号分开,所以最终的值应该是最后一个表达式的值,也就是d+3,为8,所以a=8。对于第二行代码,那么也是有三个表达 式,这时的三个表达式为a2=++b、c--、d+3,(这是因为赋值运算符比逗号运算符优先级高)所以最终表达式的值虽然也为8,但a2=3。
需要更多学习笔记干货的小伙伴、欢迎关注公众号【老九学堂】(づ ̄3 ̄)づ╭~
- 上一篇: #C语言完整基础教程#第7节循环语句说明
- 下一篇: C语言—基础知识(c语言基础知识总结)
猜你喜欢
- 2025-07-21 C程序设计之:1-1/2+1/3-... + 1/n 的和
- 2025-07-21 C语言__FILE__、__LINE__等预定义跟踪调试
- 2025-07-21 C语言之核心语法(c语言核心技术第2版pdf)
- 2025-07-21 浙江男子为装修700万豪宅,买了套20万家具,收到后心都凉了
- 2025-07-21 C语言while循环要点(c语言的while循环)
- 2025-07-21 C语言-4种运算符(c语言运算符?)
- 2025-07-21 大话C语言:比较运算符(c语言比较语句)
- 2025-07-21 C语言进阶教程:数据结构-树(二叉树、平衡树)的概念与基本操作
- 2025-07-21 C语言实现“简单输出整数”,基础编程由此开始(函数篇第一节)
- 2025-07-21 C 语言技能提升:玩转运算符与表达式,提升自己的逻辑运算掌控力
- 1515℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 577℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 514℃MySQL service启动脚本浅析(r12笔记第59天)
- 487℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 486℃启用MySQL查询缓存(mysql8.0查询缓存)
- 470℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 450℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 448℃MySQL server PID file could not be found!失败
- 最近发表
-
- 宝塔面板Nginx如何提高网站访问速度?
- 接口调试工具ApiPost中form-data/x-www-form-urlencoded/raw区别
- 高并发场景下,Nginx性能如何提升10倍?
- 高并发场景下,Nginx如何抗住千万级流量?
- 浏览器中在线预览pdf文件,pdf.mjs插件实现web预览pdf
- 为什么你的网站加载慢?90%的人忽略了这2个设置。
- 别再无脑复制Nginx配置了!掌握这10个"性能核弹"级参数
- 你的Nginx配置,可能就是你网站最慢的一环,注意这几个优化参数
- 深入浅出HTTP压缩技术(http2压缩)
- C程序设计之:1-1/2+1/3-... + 1/n 的和
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (83)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- c语言min函数头文件 (68)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)