(1)移位操作符
①左移操作符<<
就是将数字的二进制位向左移动一位。
如:1的二进制位00000000000000000000000000000001
那1<<1表示的是1的二进制位向左移动一位,就变成了00000000000000000000000000000010
②右移操作符>>
1.逻辑右移:
左边用零填充,右边丢弃。
2.算术右移:
左边用原该值的符号位填充,右边丢弃。
通常采用的都是算术右移。
如1>>1,表示的数字1的二进制位向右移动一位,就变成了
00000000000000000000000000000000
(2)位操作符
①&:对应的二进制位有0则为0,两个同时为1才为1。
如:2&3
00000000000000000000000000000010
00000000000000000000000000000011
得到的结果就是
00000000000000000000000000000010
②||:只要有1就是1,两个同时为0才为0。
③^:相同为0,相异为1
④~:按位取反
如:
00000000000000000000000000000001
取反之后就得到了
111111111111111111111111111111111111111110
注意:任何值^相同值等于零,如:3^3=0
0^任何值=任何值,如:0^3=3
(3)逗号表达式
整个表达式的结果为最后一个表达式的结果。
如:a=(3,5,7);
那么a只会被赋值为7
(4)操作符的优先级和结合性
①操作符先看优先级。
②当优先级相同时,结合性说了算
具体优先级与结合性,请上网搜索。
(5)表达式求值
①整型提升:表达式中的字符和短整型操作数在使用之前被转化为普通整形,这种转化称为整形提升,有符号的整数提升是按照变量的数据类型的符号位来提升的。无符号整数提升,高位补零。
②算术转换:讨论的类型大于等于整型类型的。
低位的向高位的转化。
其中int<unsigned int<long<unsigned long<float<double<long double