操作符的分类:
算术操作符、移位操作符、位操作符、赋值操作符、单目操作符、关系操作符、逻辑操作符、条件操作符、逗号表达式。
算数操作符:
+ 加:左右操作数适用于整型和浮点型数。
- 减:左右操作数适用于整型和浮点型数。
* 乘:左右操作数适用于整型和浮点型数。
/ 除:左右操作数适用于整型和浮点型数。
% 模运算或求余:左右两边接受两个整型操作数,返回值是余数而不是商。
移位操作符:
<< 左移操作符 左边溢出的移除,右边空出的位用0补上;
>> 右移操作符 左边空出的位有两种方式补充:
1). 逻辑移位 在左边空出的用0补充。
2).算数移位 在左边空出的用符号位原本(符号位原本的为1就用1 补充 符号位原本就是0就用0 补充)补充。
补充:(-1)除外,因为(-1)右移一位(-1),(-1)左移一位(-2)。
1、右移一个数等价于给一个数除2。 -----------> a>>1 <==> a/2。
2、左移一个数等价于给一个数乘2。 -----------> a<<1 <==> a*2。
位操作符:
& 按位与 如果两个相应的二进制位都为1,则该位的结果值为1,否则为0。(取二进制)
| 按位或 如果两个相应的二进制位都为0,则该位的结果值为0,否则为1。
^ 按位异或 如果两个想应的二进制位相同, 则该位的结果值为0,不同为1。(交换变量)
赋值操作符:
+= %=
-= <<=
*= >>=
/= &=
^= |=
单目操作符:
! 逻辑反操作
- 负值
+ 正值
& 取地址
sizeof 操作数的类型长度(以字节为单位)
~ 对一个数的二进制按位取反
-- 前置、 后置--
++ 前置、 后置++
* 间接访问操作符
(类型) 强制类型转换
补充:
sizeof (操作数的类型长度,以字节为单位)
(1)sizeof(变量),其中( )可以省略,说明sizeof不是函数,对于函数来说,它后面的( )不可以省略。
(2)sizeof(类型),其中( )不可以省路,此时sizeof仍不是函数。
(3)sizeof( )内部的表达式不参与计算
关系操作符:
> <=
< >=
== !=
补充:
=与==的用法及注意事项,=为赋值,==为等于。(常量写左)
逻辑操作符:
&& 逻辑与
|| 逻辑或
eg:
非0为真 0为假
1&2 0
真&&真 1
真&&假 0
假&&假 0
1|2 3
真&&真 1
真&&假 1
假&&假 0
条件操作符:
形式:
exp1 ? exp2 : exp3
补充:exp1为真,整个表达式的结果为exp2的结果,否则为exp3的结果。
逗号表达式:
exp1,exp2,exp3,exp4;
补充:
逗号表达式是用逗号隔开的多个表达式,
从左向向右依次执行,整个表达式的结果是最后一个表达式的结果。
下标引用、函数调用和结构成员 :
1.[ ]
操作数:一个数组名 + 一个索引值
例如:arr[10],[ ]的操作数是arr和10
2. ( )
函数调用操作符,接受一个或多个操作数,第一个操作数是函数名,剩余的操作数就是传递给函数的参数。
3. 访问一个结构的成员
(1) .
结构体 . 成员名
(2)->
结构体指针 -> 成员名
下附一张优先级等级表: