一.算数操作符
+ - * / %
①.除了%操作符之外,其它的几个操作符可以作用于整数和浮点数
②.对于 / 操作符如果两个操作数为整数,则执行整数规则,而只要有浮点数,则执行浮点数除法
二.移位操作符
<< 左移操作符 >> 右移操作符
左移操作符 移位规则: 左边丢弃,右边补零
右移操作符 移位规则: 首先右移运算分两种:
1.逻辑移位:右边丢弃,左边补零
2.算术移位:右边丢弃,左边用原值的符号位填充
三.位操作符
①.按位与运算符(&)
参加运算的两个数,按二进制位进行“与”运算。
运算规则:只有两个数的二进制同时为1,结果才为1,否则为0。(负数按补码形式参加按位与运算)
即 0 & 0= 0 ,0 & 1= 0,1 & 0= 0, 1 & 1= 1。
例:3 &5 即 00000011 & 00000101 = 00000001 ,所以 3 & 5的值为1。
②.按位或运算符(|)
参加运算的两个数,按二进制位进行“或”运算。
运算规则:参加运算的两个数只要两个数中的一个为1,结果就为1。
即 0 | 0= 0 , 1 | 0= 1 , 0 | 1= 1 , 1 | 1= 1 。
例:2 | 4 即 00000010 | 00000100 = 00000110 ,所以2 | 4的值为 6 。
③.异或运算符(^)
参加运算的两个数,按二进制位进行“异或”运算。
运算规则:参加运算的两个数,如果两个相应位为“异”(值不同),则该位结果为1,否则为0。
即 0 ^ 0=0 , 0 ^ 1= 1 , 1 ^ 0= 1 , 1 ^ 1= 0 。
例: 2 ^ 4 即 00000010 ^ 00000100 =00000110 ,所以 2 ^ 4 的值为6 。
四.单目操作符
! 逻辑反操作
- 负值
+ 正值
& 取地址
sizeof 操作数的类型长度(以字节为单位)
~ 对一个数的二进制按位取反
-- 前置、后置
++ 前置、后置++
* 间接访问操作符(解引用操作符)
五.逻辑操作符
&& 逻辑与
|| 逻辑或
六.条件操作符
exp1 ? exp2 : exp3
条件exp1为真,执行exp2,否则执行exp3
七.寻常算数转换
long double
double
float
unsigned long int
long int
unsigned int
int
如果某个操作数的类型在上面这个列表中排名较低,那么首先要转换为另外一个操作数的类型后执行运算。
(由下及上进行强制类型转换)
八.操作符的属性
复杂表达式的求值有三个影响的因素。
1. 操作符的优先级
2. 操作符的结合性
3. 是否控制求值顺序。
两个相邻的操作符的执行取决于他们的优先级。如果两者的优先级相同,取决于他们的结合性。