1. 算数操作符
+ - * / %
注意:除 % 的两个操作数必须是整数,其余的整数、浮点数都可以。
2. 移位操作符
<< 左移操作符 >>右移操作符
<<左移操作符移动规则: 左边抛弃,右边补0
>>右移操作符移动规则: 1.逻辑移位:左边用0填充,右边丢弃 2.算数移位:左边用原该值的符号填充,右边丢弃
注意:对于移位运算符,不要移动负数位,这个是标准未定义的。
3.位操作符
& 按位与 |按位或 ^按位异或
&按位与:仅当两个操作数都为1时,结果为1,否则为0。
|按位或:仅当两个操作数都为0时,结果为0,否则为1。
^按位异或:当两个操作数不同时结果为1,否则为0。
注意:他们的操作数必须是整数,若是负数,一定是补码运算。
4.赋值操作符
=
注意:=与==的区别。
复合赋值符
+= -= ^= /= %= >>= <<= &= |= ^=
5.单目操作符
!逻辑反操作 -负值 +正值 &取地址 sizeof操作数的类型长度(以字节为单位) ~对一个数的二进制按位取反 --前置、后置-- ++前置、后置++ *间接访问操作符(解引用操作符) (类型)强制类型转换
注意:sizeof可以求变量(类型)所占空间的大小,数组的下标求变量大小可不加括号,求类型大小要加括号。sizeof不是函数。
sizeof内部放数组名,数组名表示整个数组,表达式求的是整个数组的大小。&arr——数组名表示整个数组,表示求的是整个数组的地址。除这两种情况外,所有的数组
名都是首元素地址。
++a是先加加后使用;a++是先使用后加加。
6.关系操作符
> >= < <= != ==
7.逻辑操作符
&&逻辑与 ||逻辑或
注意:区分逻辑与和按位与,逻辑或和按位或
eg: 1&2——>0
1&&2——>1
1|2——>3
1||2——>1
8.条件操作符
exp1 ? exp 2 : exp 3
表达式1是条件,判断条件是否正确,若正确执行表达式2,否则执行表达式3。
9.逗号表达式
exp 1,exp 2,exp 3,…exp N
注意:逗号表达式从左往右依次执行,但整个表达式的结果是最后一个表达式的结果。
10.下标引用、函数调用和结构成员
[ ]操作数:一个数组名+一个索引值
()函数调用操作符
访问一个结构体的成员 .结构体.成员名 ->结构体指针->成员名
注意:函数调用操作符至少接收一个操作数(无参情况下,函数名本身是一个操作数)