C++运算符优先级

  • 注:以下所有内容全部翻译至C++ Primer Plus Sixth Edition
  • 说明:C++运算符分为18个优先级组,第一组优先级最高,第二组次之,以此类推。如果两个运算符被用于操作同一个操作数,并且两个运算符优先级相同,则根据C++使用的结合性来决定哪个运算符结合的更为紧密。
  • 说明:同组内,优先级一样,排名不分先后

优先级组运算符结合性含义例子
第1组:: 作用域解析运算符Class::function();
第2组( 表达式 ) 分组(3 + 6.5 * x);
()函数调用function(x, y);
()值构造,即type(expr)string("Hughen");
[ ]数组下标array[1] * 5;
->间接成员运算符ptr->num[1];
.直接成员运算符my.name;
const_cast专用类型转换(去掉类型中的常量符const)pb = const_cast<ptr*>(pa);
dynamic_cast专用类型转换(完成类层次结构中的提升void* pb = dynamic_cast<Class*>(pa)
reinterpret_cast专用类型转换(转换成其它类型的指针B* pb = reinterpret_cast<A*>(pa);
static_cast专用类型转换int a = static_cast<double>(12.77);
++自增加1,后缀i++ * 4;
--自减减1,后缀i-- * 4;
第3组!逻辑非!open();
~位非&~12;
+一元加号(正号)+a;
-一元减号(负号)-a + 7 / b;
++自增加1,前缀++i * 4;
--自减减1,前缀--i * 4;
&取地址ptr = &a;
*解除引用(间接值)i = *ptr;
()类型转换,即(type)expr(int)12.77;
sizeof以字节为单位,求长度sizeof(int);
new动态分配内存int* p = new int;
new [ ]动态分配数组int* p = new int[5];
delete动态释放内存delete p;
delete [ ]动态释放数组delete [ ] p;
第4组.*成员解除引用my.*ptr + 5;
->*间接成员解除引用pa->*ptr + 5;
第5组*i * j + 9
/i / j + 9
%模(余数)int a = 7 % 4
第6组+int x = 12 + a;
-int x = 12 - a;
第7组<<左移int a = 5 << 2;
>>右移int a = 5 >> 2;
第8组<小于bool sign = x < MAX;
<=小于或等于bool sign = x <= MAX;
>=大于或等于bool sign = x >= MAX;
>大于bool sign = x > MAX;
第9组==等于bool sign = x == MAX;
!=不等于bool sign = x != MAX;
第10组&按位与(按位AND)int a = 5 & 2;
第11组^按位异或(按位XOF)int a = 5 ^ 2;
第12组|按位或(按位OR)int a = 5 | 2;
第13组&&逻辑ANDbool sign = x && x != 0;
第14组||逻辑ORbool sign = x || x != 0;
第15组? :条件(三元条件运算符)int i = (x < MAX) ? x : MAX;
第16组=简单赋值int i = 0;
*=乘并赋值x *= 5;
/=除并赋值x /= 5;
%=求模并赋值x %= 5;
+=加并赋值x += 5;
-=减并赋值x -= 5;
&=按位AND并赋值x &= 5;
^=按位XOR并赋值x ^= 5;
|=按位OR并赋值x |= 5;
<<=左移并赋值x <<= 2;
>>=右移并赋值x >>= 2;
第17组throw抛出异常throw 404;
第18组,将两个表达式合并成一个int x = 0, y = 5 * MAX;




















































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值