操作符有以下分类:
算术操作符
移位操作符
位操作符
赋值操作符
单⽬操作符
关系操作符
逻辑操作符
条件操作符
逗号表达式
下标引用、函数调用和结构成员
一、算术操作符
+ - * / %
1. 除了%操作符之外,其他的几个操作符可以作用于整数和浮点数。
2. 对于/操作符如果两个操作数都为整数,执行整数除法。而只要有浮点数执行的就是浮点数 除法。
3. %操作符的两个操作数必须为整数。返回的是整除之后的余数。
二、移位操作符
<< 左移操作符
>> 右移操作符
个人小体会:如果分不清的话,看箭头朝向哪个方向就是向哪个方向移动。
对于右移移动规则分为两种:
1.逻辑移位:左边用0填充,右边丢弃;
2.算术移位:左边用原值额符号位填充,右边丢弃;
三、位操作符
& // 按位与
| // 按位或
^ // 按位异或
注:他们的操作数必须是整数。
四、赋值操作符
赋值操作符就是进行赋值。对于变量来说,赋值之后值就变化了。
复合赋值符
+=
-=
*=
/=
%=
>>=
<<=
&=
|= =
其实都是相通的。理解了+=就理解了其他的
五、单目操作符
! 逻辑反操作
- 负值
+ 正值
& 取地址
sizeof 操作数的类型⻓长度(以字节为单位)
~ 对⼀一个数的⼆二进制按位取反
-- 前置、后置--
++ 前置、后置++
* 间接访问操作符(解引⽤用操作符)
(类型) 强制类型转换
其中要区分sizeof和strlen的区别。就相当于sizeof可以求总长度,strlen是实际长度。
其中和a++和++a的区别是是否是先使用再相加。
六、关系操作符
> >= < <= != 用于测试“不相等” == 用于测试“相等”
七、逻辑操作符
&& 逻辑与 (两个条件中前面的一个为假,后面的就不用判断了)
|| 逻辑或 (两个条件中前面的一个为真,后面的就不用判断了)
八、条件操作符
exp1 ? exp2 : exp3(表达式1为真,执行表达式2,否则执行表达式3);
九、逗号表达式
exp1, exp2, exp3, …expN
逗号表达式,就是用逗号隔开的多个表达式。 逗号表达式,从左向右依次执行。整个表达式的结果是最后⼀个表达式的结果。
逗号表达式,就是用逗号隔开的多个表达式。 逗号表达式,从左向右依次执行。整个表达式的结果是最后⼀个表达式的结果。
十、下标引⽤、函数调用和结构成员
1.[ ]
操作数:⼀个数组名 + 一个索引值
操作数:⼀个数组名 + 一个索引值
2.( ) 函数调用操作符 接受一个或者多个操作数:第一个操作数是函数名,剩余的操作数就是传递给函数的参数。
3.访问一个结构的成员 . 结构体.成员名 -> 结构体指针->成员名
3.访问一个结构的成员 . 结构体.成员名 -> 结构体指针->成员名