Skip to content

附录D 运算符优先级

本章概述

本附录提供C++运算符优先级表,从最高到最低排列,以及常见运算符的使用示例。

运算符优先级表

优先级从高到低:

优先级运算符结合性说明
1::左到右作用域解析
2() () [] -> .左到右括号、成员访问
2++ --右到左后缀递增/递减
3++ -- + - ! ~右到左前缀一元运算符
3* & new delete右到左解引用、取址、内存管理
3sizeof typeid alignof右到左大小、类型、对齐
3(type) static_cast右到左类型转换
4.* ->*左到右成员指针
5* / %左到右乘、除、取模
6+ -左到右加、减
7<< >>左到右移位
8< <= > >=左到右关系比较
9== !=左到右相等比较
10&左到右按位与
11^左到右按位异或
12|左到右按位或
13&&左到右逻辑与
14||左到右逻辑或
15?:右到左条件运算符
15= += -=右到左赋值运算符
16throw左到右抛出异常
17,左到右逗号运算符

常见运算符示例

算术运算符

cpp
int a = 10, b = 3;
a + b   // 13(加法)
a - b   // 7(减法)
a * b   // 30(乘法)
a / b   // 3(整数除法)
a % b   // 1(取模)

关系运算符

cpp
int a = 10, b = 20;
a < b   // true(小于)
a > b   // false(大于)
a <= b  // true(小于等于)
a >= b  // false(大于等于)
a == b  // false(等于)
a != b  // true(不等于)

逻辑运算符

cpp
bool a = true, b = false;
a && b  // false(逻辑与)
a || b  // true(逻辑或)
!a      // false(逻辑非)

位运算符

cpp
int a = 0b1010, b = 0b1100;
a & b   // 0b1000(按位与)
a | b   // 0b1110(按位或)
a ^ b   // 0b0110(按位异或)
~a      // 按位取反
a << 1  // 0b10100(左移)
a >> 1  // 0b0101(右移)

优先级记忆技巧

  1. 括号最优先() [] -> .
  2. 一元运算符次之! ++ -- * & sizeof
  3. 算术运算符:先乘除后加减
  4. 关系运算符< > == !=
  5. 逻辑运算符&& 先于 ||
  6. 赋值运算符:最后执行

基于 VitePress 构建