运算符优先级 - 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组throwL-R引发异常
第18组L-R将两个表达式合成一个

以上是关于运算符优先级 - C++的主要内容,如果未能解决你的问题,请参考以下文章

运算符及优先级

c++各类运算优先级

C++中关系运算符的效率问题

运算符优先级 - C++

C++运算符优先级

c++ 表达式值(运算符优先级)