操作符
分类:
- 算术操作符
- 移位操作符
- 位操作符
- 赋值操作符
- 单目操作符
- 关系操作符
- 逻辑操作符
- 条件操作符
- 逗号表达式
- 下标引用、函数调用和结构成员
1. 算数操作符:
- + - * / %
(1)除了 % 操作符之外,其他的几个操作符可以作用于整数和浮点数。
(2) 对于 / 操作符如果两个操作数都为整数,执行整数除法。而只要有浮点数执行的就是浮点数除法。
(3) % 操作符的两个操作数必须为整数。返回的是整除之后的余数。
2. 位移操作符:
- << 左移操作符
- >> 右移操作符
(1)位移操作符移动的是二进制位。
(2)左移操作符 移位规则: 左边抛弃、右边补0。
(3)右移操作符 移位规则:
①逻辑移位 左边用0填充,右边丢弃
② 算术移位 左边用原该值的符号位填充,右边丢弃。
⚠ : 对于移位运算符,不要移动负数位,这个是标准未定义的。
3.位操作符:
- & 按位与
- | 按位或
- ^ 按位异或 (按二进制位)
(注:他们的操作数必须是整数。)
(1)&: 有一个0为0,都为1则为1。
(2)| :有一个1为1,都为0则为0。
(3)^:相同为0,相异为1。
4.赋值操作符:
(1)可连续赋值。
(2)复合赋值符:
- += 、 -= 、*= 、 /= 、 %= 、 >>= 、 <<= 、 &= 、 |= 、 ^=
5.单目操作符:
- ! 逻辑反操作 、
- - 负值
- + 正值
- & 取地址
- sizeof 操作数的类型长度(以字节为单位)
(注:sizeof为操作符,strlen为函数) - ~ 对一个数的二进制按位取反
- - - 前置、后置- -
- ++ 前置、后置++
(注:前置为先自增/自减后使用,后置为先使用后自增/自减) - *间接访问操作符(解引用操作符)
- (类型) 强制类型转换
6.关系操作符
- >
- >=
- <
- <=
- != 用于测试“不相等”
- == 用于测试“相等”
( 注意: 在编程的过程中== 和=不小心写错,导致的错误)
7.逻辑操作符
- && 逻辑与
(注:左边为假,右边不算;左边为真,右边算) - || 逻辑或
(注:左边为真,右边不算;左边为假,右边算)
8.条件操作符
- exp1 ? exp2 : exp3
(例:
if (a > 5)
b = 3;
else
b = -3;
用条件操作符表示:a>5 ? 3 : -3
)
9.逗号表达式
- exp1, exp2, exp3, …expN
(1)逗号表达式,就是用逗号隔开的多个表达式。
(2)逗号表达式,从左向右依次执行。
(3)整个表达式的结果是最后一个表达 式的结果。
10.下标引用、函数调用和结构成员
-
[ ] 下标引用操作符 (操作数:一个数组名 + 一个索引值)
(例:arr[9] ,[ ]的两个操作数是arr和9) -
( ) 函数调用操作符 (接受一个或者多个操作数:第一个操作数是函数名,剩余的操作数就是传递给函数的参数)
-
访问一个结构的成员:
① . 结构体.成员名
② -> 结构体指针->成员名