C++运算符大全:算术/关系/逻辑/位/赋值/杂项与优先级结合性
运算符是指示编译器执行特定数学/逻辑操作的符号。C++内置运算符丰富,分六大类:
- 算术运算符
- 关系运算符
- 逻辑运算符
- 位运算符
- 赋值运算符
- 杂项运算符
算术运算符
假设A=10、B=20:
| 运算符 | 说明 | 示例 |
|---|---|---|
| + | 加法 | A+B=30 |
| - | 减法(左减右) | A-B=-10 |
| * | 乘法 | A*B=200 |
| / | 除法(分子/分母) | B/A=2 |
| % | 取模(整除余数) | B%A=0 |
| ++ | 自增(+1) | A++=11 |
| -- | 自减(-1) | A--=9 |
关系运算符
假设A=10、B=20:
| 运算符 | 说明 | 示例 |
|---|---|---|
| == | 相等判断 | (A==B)为假 |
| != | 不等判断 | (A!=B)为真 |
| > | 大于判断 | (A>B)为假 |
| < | 小于判断 | (A<B)为真 |
| >= | 大于等于 | (A>=B)为假 |
| <= | 小于等于 | (A<=B)为真 |
逻辑运算符
假设A=1(真)、B=0(假):
| 运算符 | 说明 | 示例 |
|---|---|---|
| && | 逻辑与:两操作数均非零则真 | (A&&B)为假 |
| || | 逻辑或:任一操作数非零则真 | (A||B)为真 |
| ! | 逻辑非:反转操作数逻辑值 | !(A&&B)为真 |
位运算符
逐位操作。真值表(p、q为位):
| p | q | p&q | p|q | p^q |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 | 1 |
| 1 | 1 | 1 | 1 | 0 |
| 1 | 0 | 0 | 1 | 1 |
设A=60(0011 1100)、B=13(0000 1101):
A&B = 0000 1100 (12)
A|B = 0011 1101 (61)
A^B = 0011 0001 (49)
~A = 1100 0011 (-61,补码有符号数)
C++位运算符表(A=60、B=13):
| 运算符 | 说明 | 示例 |
|---|---|---|
| & | 按位与:两位均1结果1 | (A&B)=12 |
| | | 按位或:任一位1结果1 | (A|B)=61 |
| ^ | 按位异或:仅一位1结果1 | (A^B)=49 |
| ~ | 按位取反:翻转所有位 | (~A)=-61 |
| << | 左移:左操作数按右操作数位数左移 | A<<2=240 |
| >> | 右移:左操作数按右操作数位数右移 | A>>2=15 |
赋值运算符
| 运算符 | 说明 | 示例 |
|---|---|---|
| = | 简单赋值 | 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<<=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 | sizeof 返回变量/类型字节大小。 |
| 2 | 条件运算符 ? :
|
| 3 | 逗号运算符 , 顺序求值,整体值为最后表达式值。 |
| 4 | 成员访问 . 和 -> 访问类/结构体/联合成员。 |
| 5 | 强制转换 Cast 如 |
| 6 | 取地址 & 返回变量地址。 |
| 7 | 间接访问 * 指针解引用。 |
运算符优先级与结合性
优先级高者先结合。如x = 7 + 3 * 2中*优先于+,结果13而非20。表中上方优先级高,同组按结合性结合。
| 类别 | 运算符 | 结合性 |
|---|---|---|
| 后缀 | () [] -> . ++ -- | 左→右 |
| 一元 | + - ! ~ ++ -- (type)* & sizeof | 右→左 |
| 乘除模 | * / % | 左→右 |
| 加减 | + - | 左→右 |
| 移位 | << >> | 左→右 |
| 关系 | < <= > >= | 左→右 |
| 相等 | == != | 左→右 |
| 按位与 | & | 左→右 |
| 按位异或 | ^ | 左→右 |
| 按位或 | | | 左→右 |
| 逻辑与 | && | 左→右 |
| 逻辑或 | || | 左→右 |
| 条件 | ?: | 右→左 |
| 赋值 | = += -= *= /= %= >>= <<= &= ^= |= | 右→左 |
| 逗号 | , | 左→右 |
C语言