C语言基础知识梳理之运算符和表达式基础知识
C语言运算符和表达式基础知识
运算符和表达式的基本概念
- 操作数:对于一个运算符需要几个数字才能使用
- 左值:运算符的左边的变量,不能是常量,左操作数必须是左值
- 右值:运算符右边的值
- 优先级:先算谁再算谁
- 结合性:从左往右 从右往左
赋值运算符
-
加减法:int c=12
注意:int a=c=123,这种写法是错误写法 赋值运算符存在以左值类型做转换的隐式转换
算术运算符
-
加减法: + -
-
乘法:* 不能省略
-
除法:/ 自动取整 2/3=0 想要小数使分子或者分母为小数 或者直接强转分子或分母
-
取余:% 只用于整数 符号之和被取余的数有关系
-
复合赋值运算符
-
+= -= /= *=
C *= a+b //解析为:c=c*(a+b)
-
条件运算符和逻辑运算符
条件运算符
//大于 >
//小于 <
//大于等于 >=
//小于等于 <=
//等于 ==
//不等于 !=
-
条件表达式的值只有0(假,不成立)和1(真,成立)两种
-
不存在连续操作
- 如 1<a<2 1<a只有0或者1两种值,永远小于2,所以1<a<2值为1
逻辑运算符
- &&:逻辑与 并且的意思 前者成立时后者不会去执行
- ||:逻辑或 或者的意思只要满足应该条件 前者的值为1后者不会执行,前者的值为0,后者才会执行
- ! :取反 真的变成假的,假的变成真的
- && 和|| 存在短路现象
位运算符
- 位或 :|
- 每位按逻辑或运算,如 1|2 = 3
- 位与 :&
- 每位按逻辑与运算,如 1&1 = 1
- 异或 :^
- 相同为0,不同为1,如 1^2 = 3
- 右移 :>>
- 往右边移动,左边加0,如 8>>3 = 1
- 左移 :<<
- 往左边移动,右边加0,如 1<<3 = 8
- 按位取反:~
- 0变成1,1变成0 负数需要转换成原码
- 补码=反码-1
特殊运算符
-
++ –
- 前置先加减再赋值,后置先赋值再加减
-
三目运算符:? :
-
-
逗号运算符
-
由多部分组成,起作用的是最后一部分
int a = 1; int b = 2; int max = (a > b ? a : b); //求最大值 //(a > b ? a : b) //a>b 成立 (a > b ? a : b)等于a //a>b 不成立 (a > b ? a : b)等于b //因为1>2不成立 (a > b ? a : b)的值就是b
-
运算符优先级
内存共享
- 只看前置不看后置,所有部分都是一样的值
res = a++ + a++ + a++ + a++ + a++;//所有的都是后置++,所以都是1,5a,a=a+5a
res = b++ * ++b * b++ * ++b * b++;//有两个前置++,所以是4*4*4*4*4,b=b+5b
~~~c
a++ + a++ + a++;//所有的都是后置++,所以都是1,5a,a=a+5a
res = b++ * ++b * b++ * ++b * b++;//有两个前置++,所以是4*4*4*4*4,b=b+5b
本文来自博客园,作者:{oy},转载请注明原文链接:https://www.cnblogs.com/Oysen/p/17005619.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)