- 移位操作符 左移时空出来的右边使用0补上
逻辑右移 右边使用0补上
算术右移 右边使用符号位补上
左移操作符<< 右移操作符 >>
对于无符号值 都是逻辑移位
有符号值 取决于编译器
2.
位操作符
AND &
OR |
XOR ^
3.
赋值
表达式的一种
复合赋值符
+=,-=,*=,/=,%=<<=,>>=, &=,^=,|=,a+=expression;a=a+(expression);
4.
单目运算符
!逻辑反操作~对于整型操作数求补-产生操作数的负值+什么都不干&产生他的操作数的地址int a, *b;b=&a;*间接访问操作符,同指针一起使用,用于访问指针所指向的值sizeof判断操作数的类型长度,以字节为单位表示,操作数既可以是一个表达式,又可以是一个变量,也可以是一个加上括号的类型名,其次,判断表达式的长度并不需要对表达式求值eg, sizeof(a=b+1)并没有对a求值(类型)强制类型转换
++ 在操作数之前的操作符在变量被使用之前增加他的值,而在操作数之后的操作符在变量值被使用之后才增加它的值c=++a;//a增加至11,c=11d=b++//b=11;d=10抽象的说,前缀与后缀都是复制一份变量值的拷贝。用于周围表达式的的值就是这份拷贝,前缀操作符就是在复制以前增加变量的值,而后缀的表达式在于复制以后才增加变量的值
5.关系操作符
> ,>=,<,<=,,!=,==
结果为0,假,其余非0值真
6.逻辑操作符
&& ||
7.条件操作符
expression1?expression2: expression3
假如expression1真,那就执行expression2;否则expression3
8.逗号操作符
expression1,expression2,……expressionN
将多个表达式分隔开来,自左向右逐个求值,以最后一个表达式作为逗号的值
2.1左值和右值
左值 可以出现在赋值号左边的东西(标明可以存储结果值的地点)
运算优先级低到高逗号,赋值运算符,条件运算符,逻辑运算符,位操作符,关系操作符,移位,算术运算,类型转换,sizeof,&,*,前缀++,--, 单目运算符(-.+.~.!.--++前缀,->, . [])