1.2 关系运算符
== != > < >= <=
1.3 逻辑运算符
运算符 |
描述 |
&& |
所谓逻辑与运算符。如果两个操作数都非零,则条件变为真 |
|| |
所谓的逻辑或操作。如果任何两个操作数是非零,则条件变为真 |
! |
所谓逻辑非运算符。使用反转操作数的逻辑状态。如果条件为真,那么逻辑非操后结果为假 |
1.4 位运算符
A |
B |
A&B |
A|B |
A^B |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
这里最难理解的就是^了,只要认为AB两者都相同的时候,为0,其他都为1
假设A为60,B为13
运算 |
描述 |
示例 |
& |
二进制与操作副本位的结果,如果它存在于两个操作数 |
(A & B) = 12, 也就是 0000 1100 |
| |
二进制或操作副本,如果它存在一个操作数 |
(A | B) = 61, 也就是 0011 1101 |
^ |
二进制异或操作副本,如果它被设置在一个操作数就是按位取非 |
(A ^ B) = 49, 也就是 0011 0001 |
&^ |
二进制位清空&^ |
(A&^B)=48,也就是110000 |
<< |
二进制左移位运算符。左边的操作数的值向左移动由右操作数指定的位数 |
A << 2 =240 也就是 1111 0000 |
>> |
二进制向右移位运算符。左边的操作数的值由右操作数指定的位数向右移动 |
A >> 2 = 15 也就是 0000 1111 |
1.5 赋值运算符
运算符 |
描述 |
示例 |
= |
简单的赋值操作符,分配值从右边的操作数左侧的操作数 |
C = A + B 将分配A + B的值到C |
+= |
相加并赋值运算符,它增加了右操作数左操作数和分配结果左操作数 |
C += A 相当于 C = C + A |
-= |
减和赋值运算符,它减去右操作数从左侧的操作数和分配结果左操作数 |
C -= A 相当于 C = C - A |
*= |
乘法和赋值运算符,它乘以右边的操作数与左操作数和分配结果左操作数 |
C *= A 相当于 C = C * A |
/= |
除法赋值运算符,它把左操作数与右操作数和分配结果左操作数 |
C /= A 相当于 C = C / A |
%= |
模量和赋值运算符,它需要使用两个操作数的模量和分配结果左操作数 |
C %= A 相当于 C = C % A |
<<= |
左移位并赋值运算符 |
C <<= 2 相同于 C = C << 2 |
>>= |
向右移位并赋值运算符 |
C >>= 2 相同于 C = C >> 2 |
&= |
按位与赋值运算符 |
C &= 2 相同于 C = C & 2 |
^= |
按位异或并赋值运算符 |
C ^= 2 相同于 C = C ^ 2 |
|= |
按位或并赋值运算符 |
C |= 2 相同于 C = C | 2 |
1.6优先级运算符优先级
有些运算符拥有较高的优先级,二元运算符的运算方向均是从左至右。下表列出了所有运算符以及它们的优先级,由上至下代表优先级由高到低:
优先级 |
运算符 |
7 |
~ ! ++ -- |
6 |
* / % << >> & &^ |
5 |
+ - ^ |
4 |
== != < <= >= > |
3 |
<- |
2 |
&& |
1 |
|| |
当然,你可以通过使用括号来临时提升某个表达式的整体运算优先级。