运算符优先级 - C++
Posted xhBruce
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了运算符优先级 - 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++的主要内容,如果未能解决你的问题,请参考以下文章