C/C++教程

运算符优先级 - C++

本文主要是介绍运算符优先级 - 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++的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!