·1.操作符分类
算数操作符
移位操作符
位操作符
赋值操作符
单目操作符
关系操作符
逻辑操作符
条件操作符
逗号表达式
下标引用、函数调用和结构成员
接下来我们开始一一解析这几种操作符
2.算术操作符
![](https://img-blog.csdnimg.cn/img_convert/0243086388202630f17dd8eeaa36eaf3.png)
算数操作符是我们最熟悉的操作符,可以用来进行数据运算。
使用方法效果如下图所示:
![](https://img-blog.csdnimg.cn/img_convert/b3601403dcaafad6989422c0ef352b39.png)
3.移位操作符
左移操作符 <<
右移操作符 >>
移位操作数只能为整数,不能移动负数位
计算机存储数据是用补码的方式储存的
3.1 左移操作符
移位规则:左边丢弃,右边补0
![](https://img-blog.csdnimg.cn/img_convert/645943840345e2c9d9530154fa5703b1.png)
原码:人们最熟悉的编码方式,0/1表示正负,数值位为二进制位
反码:除符号位不变,将原码的数值位取反。
补码:反码+1
补充原码和反码互相转化的技巧:符号位不变,从右往左(低位到高位)看,遇到第一个‘1’后,第一个‘1’左边的数值位全部取反。补码转原码同样适用!
3.2 右移操作符
移位规则:分为两种:
逻辑移位:右边丢弃,左边补0
算数移位:右边丢弃,左边补符号位(正数补0,负数补1)
![](https://img-blog.csdnimg.cn/img_convert/992f3222bee0f10b44e17f483c20dc1d.png)
5. 赋值操作符(=)
用=表示赋值,==判断是否相等
复合赋值操作符:
+=
-=
*=
/=
%=
>>=
<<=
&=
|=
^=
例如:sum=+i 等价于 sum=sum +i
6.单目运算符
![](https://img-blog.csdnimg.cn/img_convert/5282da46fd012183d28da2d44ba8762c.png)
‘ !’为逻辑取反,非0的都为真,0为假
![](https://img-blog.csdnimg.cn/img_convert/417cfc926d35f352c96aed1df95e00b5.png)
![](https://img-blog.csdnimg.cn/img_convert/8ca0b03d0cf8f01a686e948d4f868b31.png)
6.1 sizeof与数组
![](https://img-blog.csdnimg.cn/img_convert/21159a5bf325f47b77459c950bb48d0a.png)
从这里可以看出(2)(4)传进去的为数组的首地址,并不是整个数组。
7.关系操作符
![](https://img-blog.csdnimg.cn/img_convert/1e857f68c5607eb03478da1396e64adf.png)
8.逻辑操作符
![](https://img-blog.csdnimg.cn/img_convert/cbf0123640ad44e0c9db4df92a46f1ae.png)
![](https://img-blog.csdnimg.cn/img_convert/eee047a562db17802a31d84fe6271637.png)
如图代码:&&操作,判断a++先使用后赋值,在判断a为0后,直接可以判断出表达式为假,因此后面的运算都不算了
9.条件操作符
exp1 ? exp2 : exp3
![](https://img-blog.csdnimg.cn/img_convert/e0ad0d66a840cc5a11dd55190c75f947.png)
10.逗号表达式
(exp1, exp2, exp3, …expN)
逗号表达式,从左向右依次执行。整个表达式的结果是最后一个表达式的结果。
![](https://img-blog.csdnimg.cn/img_convert/c3b0575367d2abd662409048c81e38cd.png)
11.下标引用、函数调用和结构成员
[ ] 下标引用操作符
( ) 函数调用操作符
结构体访问 (. ->)