如果您现在阅读后不理解这:位运算符。只要您不急于做硬件开发,就没必要立即理解,建议可以先跳过。
运算符 | 描述 | 用法 |
---|---|---|
& | 如果同时存在于两个操作数中,二进制 AND 运算符复制一位到结果中 | A&B |
| | 如果存在于任一操作数中,二进制 OR 运算符复制一位到结果中 | A|B |
^ | 如果存在于其中一个操作数中但不同时存在于两个操作数中,二进制异或运算符复制一位到结果中 | A^B |
~ | 二进制补码运算符是一元运算符,具有"翻转"位效果 | ~A |
<< | 二进制左移运算符。左操作数的值向左移动右操作数指定的位数 | A<<B |
>> | 二进制右移运算符。左操作数的值向右移动右操作数指定的位数 | A>>B |
运算符 | 描述 |
---|---|
&= | 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 |
运算符 | 描述 |
---|---|
= | 之前已经多次用到的等于符号,简单的赋值运算符,把右边操作数的值赋给左边操作数。C=A+B |
+= | 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语言中运算符也有优先顺序。优先级越高越先执行。
1 | 括号后缀 | ( | ) | [ | ] | -> | . | |||
---|---|---|---|---|---|---|---|---|---|---|
2 | 一元 (单目) |
! | ~ | ++ | -- | - | (type) | * | & | sizeof |
3 | 乘除 | * | / | % | ||||||
4 | 加减 | + | - | |||||||
5 | 位运算 | << | >> | |||||||
6 | 关系 (比较) |
< | > | <= | >= | |||||
7 | 相等 (比较) |
== | != | |||||||
8 | 位运算 | & | ||||||||
9 | 位运算 | ^ | ||||||||
10 | 位运算 | | | ||||||||
11 | 与 (逻辑) |
&& | ||||||||
12 | 或 (逻辑) |
|| | ||||||||
13 | 条件 (三目) |
? : | ||||||||
14 | 赋值 | = | += | -= | *= | /= | %= | |||
<<= | >>= | &= | ^= | |= | ||||||
15 | 逗号 | , |