算术操作符
操作符 | 描述 | 用法示例 |
---|---|---|
* | 乘法 | rexp * rexp |
/ | 除法 | rexp / rexp |
% | 整数取余 | rexp % rexp |
+ | 加法 | rexp + rexp |
- | 减法 | rexp - rexp |
% 操作符只可以作用于整数,返回的是整除之后的余数,其他操作符可以作用于整数和浮点数
/ 操作符的两个操作数如果都为整数,则执行整数除法,如果有一个操作数为浮点数,则执行浮点数除法
移位操作符
操作符 | 描述 | 用法示例 |
---|---|---|
<< | 左移位 | rexp << rexp |
>> | 右移位 | rexp >> rexp |
左移位操作符移位规则:
左边抛弃,右边补0
右移位操作符移位规则:
逻辑移位:左边用 0 填充,右边丢弃
算术移位:左边用原值的符号位填充,右边丢弃
所以,对于移位运算符,不要移动负数位,这个是标准未定义的
位操作符
操作符 | 描述 | 用法示例 |
---|---|---|
& | 位与 | rexp & rexp |
| | 位异或 | rexp ^ rexp |
^ | 位或 | rexp |
按位与:二进制位都为1时,结果才为1
按位或:二进制位都为0时,结果才为0
按位异或:二进制位相同为0,相异为1
操作数必须是整数
单目操作符
操作符 | 描述 | 用法示例 |
---|---|---|
++ | 后缀自增 | lexp ++ |
– | 后缀自减 | lexp – |
! | 逻辑反 | ! rexp |
~ | 按位取反 | ~ rexp |
+ | 正值 | rexp |
- | 负值 | - rexp |
++ | 前缀自增 | ++ lexp |
– | 前缀自减 | – lexp |
* | 间接访问 | * rexp |
& | 取地址 | & lexp |
sizeof | 取其长度,以字节表示 | sizeof rexp;sizeof(类型) |
(类型) | 类型转换 | (类型) rexp |
特别注意,sizeof 是一个操作符,不是函数
关系操作符
操作符 | 描述 | 用法示例 |
---|---|---|
> | 大于 | rexp > rexp |
>= | 大于等于 | rexp >= rexp |
< | 小于 | rexp < rexp |
<= | 小于等于 | rexp <= rexp |
== | 等于 | rexp == rexp |
!= | 不等于 | rexp != rexp |
注意 = 和 == 不要写错,一个是赋值,一个是判断是否相等
逻辑操作符
操作符 | 描述 | 用法示例 |
---|---|---|
&& | 逻辑与 | rexp && rexp |
|| | 逻辑或 | rexp |
条件操作符
exp1 ? exp2 : exp3
若 exp1 的执行结果为真,则 exp2 作为整个表达式的结果
若 exp1 的执行结果为假,则 exp3 作为整个表达式的结果
逗号表达式
exp1, exp2, exp3, … expN
表达式从左向右依次执行,表达式的结果是最后一个表达式的结果
下标引用操作符
[ ]
用法:一个数组名 + 一个索引值
函数调用操作符
( )
用法:接受一个或者多个操作数,第一个操作数是函数名,剩余的操作数是传递给函数的参数
访问结构成员操作符
.
用法:结构体.成员名
->
用法:结构体指针->成员名