文章目录
1.操作符分类
2.操作符优先级
3.操作符陷阱
操作符分类
算术操作符 + - * / %
移位操作符 << 左移操作符 >>右移操作符
位操作符 & 按位与 | 按位或 ^ 按位异或
赋值操作符 /= *= %= += -= >>= <<= &= |= ^=
单目操作符 ! 逻辑反操作 - 负值 + 正值 & 取地址 -- 前置、后置 --
++ 前置、后置 ++ * 间接访问操作符(解引用操作符)
sizeof 操作数的类型长度(以字节为单位) ~ 对一个数的二进制按位取反
(类型) 强制类型转换
关系操作符 > >= < <= != ==
逻辑操作符 &&(逻辑且) ||(逻辑非)
条件操作符 exp1?exp2:exp3
逗号表达式 ,
操作符优先级
操作符 | 描述 | 用法示例 | 结合性 |
---|---|---|---|
() | 聚组 | (表达式) | N/A |
() | 函数调用 | rexp(rexp,...,rexp) | L-R |
[ ] | 下标引用 | rexp[rexp] | L-R |
. | 访问结构成员 | exp.member_name | L-R |
-> | 访问结构指针成员 | rexp->member_name | L-R |
++ | 后缀自增 | lexp ++ | L-R |
-- | 后缀自减 | lexp - | L-R |
! | 逻辑反 | ! rexp | R-L |
~ | 按位取反 | ~ rexp | R-L |
+ | 单目,表示正值 | + rexp | R-L |
- | 单目,表示负值 | - rexp | R-L |
++ | 前缀自增 | ++ lexp | R-L |
-- | 前缀自减 | -- lexp | R-L |
* | 间接访问 | * rexp | R-L |
& | 取地址 | & lexp | R-L |
sizeof | 取其长度,以字节表示 | sizeof rexp sizeof(类型) | R-L |
() | 类型转换 | (类型) rexp | R-L |
* | 乘法 | rexp * rexp | L-R |
/ | 除法 | rexp / rexp | L-R |
% | 整数取余 | rexp % rexp | L-R |
+ | 加法 | rexp + rexp | L-R |
- | 减法 | rexp - rexp | L-R |
<< | 左移位 | rexp << rexp | L-R |
>> | 右移位 | rexp >> rexp | L-R |
> | 大于 | rexp > rexp | L-R |
>= | 大于等于 | rexp >= rexp | L-R |
< | 小于 | rexp < rexp | L-R |
<= | 小于等于 | rexp <= rexp | L-R |
== | 等于 | rexp == rexp | L-R |
!= | 不等于 | rexp != rexp | L-R |
& | 位与 | rexp & rexp | L-R |
^ | 位异或 | rexp ^ rexp | L-R |
| | 位或 | rexp | rexp | L-R |
&& | 逻辑与 | rexp && rexp | L-R |
|| | 逻辑或 | rexp || rexp | L-R |
? : | 条件操作符 | rexp ? rexp : rexp | N/A |
= | 赋值 | lexp = rexp | R-L |
+= | 以...加 | lexp += rexp | R-L |
-= | 以...减 | lexp -= rexp | R-L |
*= | 以...乘 | lexp *= rexp | R-L |
/= | 以...除 | lexp /= rexp | R-L |
%= | 以...取模 | lexp %= rexp | R-L |
<<= | 以...左移 | lexp <<= rexp | R-L |
>>= | 以...右移 | lexp >>= rexp | R-L |
&= | 以...与 | lexp &= rexp | R-L |
^= | 以...异或 | lexp ^= rexp | R-L |
|= | 以...或 | lexp |= rexp | R-L |
, | 逗号 | rexp,rexp | L-R |
操作符陷阱
1.对于算术运算符,注意 % 和 /
/ 两边的数若都为整数,则结果一定也是整数,而不是小数。而算式中只要有浮点数结果就为浮点数。
% 操作符的两个操作数必须为整数。返回的是整除之后的余数。
2.移位操作符 << 和 >> 移动的都是二进制位
警告⚠ : 对于移位运算符,不要移动负数位,这个是标准未定义的。
3.单目操作符 注意 sizeof 计算的是变量的字节大小;不能进行运算
4.逻辑操作符
逻辑操作符从左往右计算,当是 && 只要有一边为假就全为假,当 | | 时只要有一边为真就全为真
相信看完这道题,你应该会 && 和 || 的短路求值的问题了嘛。
总结
这是我总结的操作符,希望对大家有所帮助。若有欠缺,可以评论区补充。