运算符优先级
C++运算符优先级
有时在写判断条件时会忘记运算符的优先级,每次查完就忘了,索性在这里摘抄一下。
运算符说明 | 运算符 |
---|---|
第1组优先级,无关联 | |
范围解析 | :: |
第2组优先级,从左往右关联 | |
成员选择(对象或指针) | .或-> |
数组下标 | [] |
函数调用 | () |
后缀递增 | ++ |
后缀递减 | – |
类型名称 | typeid |
类型转换 | const_cast、dynamic_cast、reinterpret_cast、static_cast |
第3组优先级,从右往左关联 | |
对象或类型的大小 | sizeof |
前缀递增 | ++ |
前缀递减 | – |
二进制反码 | ~ |
逻辑“非” | ! |
正负号 | +、- |
取地址 | & |
解地址符 | * |
创建对象 | new |
析构对象 | delete |
强制转换 | () |
第4组优先级,从左往右关联 | |
指向成员的指针(对象或指针) | .* 或->* |
第5组优先级,从左往右关联 | |
乘除和取模运算 | *、/ 、% |
第6组优先级,从左往右关联 | |
加减运算 | + 、- |
第7组优先级,从左往右关联 | |
移位运算 | >>或<< |
第8组优先级,从左往右关联 | |
大于、小于、大于等于、小于等于 | >, <, >=, <= |
第9组优先级,从左往右关联 | |
等于、不等于 | ==、!= |
第10组优先级,从左往右关联 | |
按位“与” | & |
第11组优先级,从左往右关联 | |
按位“异或” | ^ |
第12组优先级,从左往右关联 | |
按位“或” | | |
第13组优先级,从左往右关联 | |
逻辑与 | && |
第14组优先级,从左往右关联 | |
逻辑或 | || |
第15组优先级,从右到左关联 | |
条件 | ?: |
赋值 | = |
乘法赋值 | *= |
除法赋值 | /= |
取模赋值 | %= |
加法赋值 | += |
减法赋值 | -= |
左移赋值 | <<= |
右移赋值 | >>= |
按位“与”赋值 | &= |
按位“或”赋值 | |= |
按位“异或”赋值 | ^= |
抛出表达式 | throw |
第16组优先级,从左往右关联 | |
逗号分隔符 | , |
优先级由高到低,同一组的运算符具有相同的优先级。关联是指同一优先级的运算符的解析顺序。此外,()
具有最高优先级,可以使用小括号来改变运算顺序。
示例
复合赋值运算和加减乘除
复合赋值运算都是比加减乘除优先级低的。
1 | // 加赋值 |
逻辑运算和按位运算
按位运算比逻辑运算的优先级高。
按位运算之间也是有优先级的,&
最高,^
其次,|
最低。
1 | bool flag = false; |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 cwt技树年轮!
评论