1.算术操作符:+ - * / %其中%只接受两个整型数,其他的可以是整型或者浮点型
2.移位操作符:<< >>,分为逻辑移位和算术移位,操作符两个操作数必须是整型
逻辑移位:左移时,值最左边移出的就丢弃,右侧空出来的就补0;右移时,移出去的抛弃,左边的空出来的补0;
算术移位:左移时和逻辑左移一样,右移时,左边空出来的由符号位决定,符号位为1,则移入的位均为1,符号位为0,则移入的位均为0;
无符号值执行的所有移位都是逻辑移位;有符号值则不确定
3.程序5.1计数一个值中值为一的位的个数(思路:移位,%2或者右移,&1)
4..位操作符:AND(&) OR(|) XOR(^)异或是相同为0不同为1
5.赋值:=
复合赋值符:+= -= * = /= %= <<= >>= &= |= ^=
6.单目操作符:!(逻辑取反,操作数为真,则结果为假)
~(对整型类型的操作数求补)
-(取负值)
&(取地址操作符)
*(间接访问操作符)
sizeof(判断操作数的类型长度,以字节为单位)
++和--(++如果被用在操作数前面,操作数的值被增加,表达式的值就是操作数增加后的值;++如果被用在操作数之后,操作数的值仍被增加,但表达式的值是 操作数增加之前的值。--也是同理)
7.关系操作符: > >= < <= != == 这些操作符产生的是一个整形值,而不是布尔值
8.逻辑操作符: && ||
9.条件操作符: expression?expression2:expression3
10.逗号操作符:while(a=getvalue(),countvalue(a),a>0){}就等同于a=getvalue();countvalue(a);while(a>0){a=getvalue();countvalue(a);。。}
11.除了优先级外,下标引用和间接访问操作符是等价的,array[下标] *(array+(下标))
12.左值和右值:左值就是那些能出现在赋值符号左边的东西,右值就是能够出现在赋值符号右边的东西
13.操作符的优先级:
()
[]
.
->
++(后缀)
--(后缀)
!
~
-
++(前缀)
--(前缀)
*
&
sizeof
*
/
%
+
-
<<
>>
>
>=
<
<=
&
|
^
&&
||
?:
=
+=
-=
*=
/=
%=
<<=
>>=
&=
|=
^=
,