本文主要是介绍运算符优先级 - C++,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
运算符优先级 - C++
a & b != 0
实际上被解释为a & (b != 0)
,!=
优先级高于&
#include <iostream>
using namespace std;
int main(int argc, char** argv) {
cout << "a & b != 0 : " << (1 & 2 != 0) << endl;
cout << "a & b != 0 : " << ((1 & 2) != 0) << endl;
}
r = a << 4 + 1
实际上被解释为r = a << (4 + 1)
,+
优先级高于<<
#include <iostream>
using namespace std;
int main(void) {
cout << "r = a << 4 + 1 : " << (8 << 4 + 1) << endl;
cout << "r = a << 4 + 1 : " << ((8 << 4) + 1) << endl;
}
18个优先级组
优先级第1组 | 运算符 | 结合性 | 含义 |
---|
第1组 | :: | | 作用域解析运算符 |
第2组 | (表达式) | | 分组 |
| () | L-R 从左到右 | 函数调用 |
| () | | 值构造,即type(expr) |
| [] | | 数组下标 |
| -> | | 间接成员运算符 |
| . | | 直接成员运算符 |
| const_cast | | 专用的类型转换 |
| dynamic_cast | | 专用的类型转换 |
| reinterpret_cast | | 专用的类型转换 |
| static_cast | | 专用的类型转换 |
| typeid | | 类型标识 |
| ++ | | 加1运算,后缀 |
| -- | | 减1运算,后缀 |
第3组 | ! | R-L | 逻辑非 |
| ~ | | 位非 |
| + | | 一元加号(正号) |
| - | | 一元减号(负号) |
| ++ | | 加1运算,前缀 |
| -- | | 减1运算,前缀 |
| & | | 地址 |
| * | | 解除引用(间接值) |
| () | | 类型转换,即(type)expr |
| sizeof | | 长度,以字节为单位 |
| new | | 动态分配内存 |
| new[] | | 动态分配数组 |
| delete | | 动态释放内存 |
| delete[] | | 动态释放数组 |
第4组 | .* | L-R | 成员解除引用 |
| ->* | | 间接成员解除引用 |
第5组 | * | L-R | 乘 |
| / | | 除 |
| ^ | | 模(余数) |
第6组 | * | L-R | 加 |
| - | | 减 |
第7组 | << | L-R | 左移 |
| >> | | 右移 |
第8组 | < | L-R | 小于 |
| <= | | 小于或等于 |
| >= | | 大于或等于 |
| > | | 大于 |
第9组 | == | L-R | 等于 |
| != | | 不等于 |
第10组 | & | L-R | 按位 AND |
第11组 | ^ | L-R | 按位 XOF(异或) |
第12组 | | | L-R | 按位 OR |
第13组 | && | L-R | 逻辑 AND |
第14组 | || | L-R | 逻辑 OR |
第15组 | :? | R-L | 条件 |
第16组 | = | R-L | 简单赋值 |
| *= | | 乘并赋值 |
| /= | | 除并赋值 |
| %= | | 求模并赋值 |
| += | | 加并赋值 |
| -= | | 减并赋值 |
| &= | | 按位 AND 并赋值 |
| ^= | | 按位 XOF 并赋值 |
| |= | | 按位 OR 并赋值 |
| <<= | | 左移并赋值 |
| >>= | | 右移并赋值 |
第17组 | throw | L-R | 引发异常 |
第18组 | , | L-R | 将两个表达式合成一个 |
这篇关于运算符优先级 - C++的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!