C++ 中的运算符优先级
C++ 运算符优先级
运算符优先级决定了表达式中运算的执行顺序。优先级较高的运算符优先计算。
示例
考虑以下表达式:
int x = 10 + 4 * 3;
这里,乘法的优先级高于加法,因此首先计算 4 * 3,结果为 x = 10 + 12,进而得出 x = 22。
要更改顺序,请使用括号:
int x = (10 + 4) * 3;
现在首先计算 10 + 4,结果为 x = 14 * 3,进而得出 x = 42。
C++ 运算符优先级表
运算符按优先级从上到下降序排列:
| 运算符 | 描述 | 示例 |
|---|---|---|
| () [] -> . | 函数调用、下标、成员访问 | arr[0], obj.method(), ptr->member |
| ++ -- | 递增/递减 | x++, --y |
| ! ~ - + | 逻辑/按位非,一元加/减 | !flag, ~num, -value, +value |
| * / % | 乘法、除法、模数 | a * b, x / y, n % 2 |
| + - | 加法,减法 | a + b, x - y |
| << >> | 按位移位 | x > 3 |
| < <= > >= | 关系运算符 | a = y |
| == != | 相等运算符 | a == b, x != y |
| & | 按位与 | a & b |
| ^ | 按位异或 | x ^ y |
| | | 按位或 | a | b |
| && | 逻辑与 | x && y |
| || | 逻辑或 | a || b |
| ?: | 三元条件 | x ? y : z |
| = += -= *= /= %= &= ^= |= >= | 赋值和复合赋值 | a = b, x += y, z >>= 2 |
| , | 逗号 | x = (a, b, c) |
运算符优先级示例
尝试以下示例来理解 C++ 中运算符优先级的概念。将以下 C++ 程序复制并粘贴到 test.cpp 文件中,然后编译并运行该程序。
检查带括号和不带括号的简单区别。由于 ()、/、* 和 + 的优先级不同,因此会产生不同的结果。优先级较高的运算符将首先被求值 -
#include <iostream>
using namespace std;
main() {
int a = 20;
int b = 10;
int c = 15;
int d = 5;
int e;
e = (a + b) * c / d; // ( 30 * 15 ) / 5
cout << "Value of (a + b) * c / d is :" << e << endl ;
e = ((a + b) * c) / d; // (30 * 15 ) / 5
cout << "Value of ((a + b) * c) / d is :" << e << endl ;
e = (a + b) * (c / d); // (30) * (15/5)
cout << "Value of (a + b) * (c / d) is :" << e << endl ;
e = a + (b * c) / d; // 20 + (150/5)
cout << "Value of a + (b * c) / d is :" << e << endl ;
return 0;
}
当编译并执行上述代码时,它会产生以下结果 -
Value of (a + b) * c / d is :90 Value of ((a + b) * c) / d is :90 Value of (a + b) * (c / d) is :90 Value of a + (b * c) / d is :50

