运算符优先级
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组优先级,从左往右关联 | |
逗号分隔符 | , |
优先级由高到低,同一组的运算符具有相同的优先级。关联是指同一优先级的运算符的解析顺序。此外,()
具有最高优先级,可以使用小括号来改变运算顺序。
示例#
复合赋值运算和加减乘除#
复合赋值运算都是比加减乘除优先级低的。
// 加赋值
int a = 10, b = a, c = b, d = c;
a += 2 + 3; // 15
b += 2 - 3; // 9
c += 2 * 3; // 16
d += 4 / 2; // 12
// 减赋值
a = 10, b = a, c = b, d = c;
a -= 2 + 3; // 5
b -= 2 - 3; // 11
c -= 2 * 3; // 4
d -= 4 / 2; // 8
// 乘赋值
a = 10, b = a, c = b, d = c;
a *= 2 + 3; // 50
b *= 2 - 3; // -10
c *= 2 * 3; // 60
d *= 4 / 2; // 20
// 除赋值
a = 10, b = a, c = b, d = c;
a /= 2 + 3; // 2
b /= 2 - 3; // -10
c /= 2 * 3; // 1
d /= 4 / 2; // 5
// 移位赋值
a = 256, b = a, c = b, d = c;
a >>= 2 + 3; // 8
b >>= 3 - 2; // 128
c >>= 2 * 3; // 4
d >>= 4 / 2; // 64
// 按位与赋值
a = 15, b = a, c = b, d = c; // 15 = 0b1111
a &= 2 + 3; // 5
b &= 2 - 3; // 15
c &= 2 * 3; // 6
d &= 4 / 2; // 2
逻辑运算和按位运算#
按位运算比逻辑运算的优先级高。
按位运算之间也是有优先级的,&
最高,^
其次,|
最低。
bool flag = false;
auto res = flag && 1 | 3; // res类型是bool 先计算按位运算,再进行逻辑运算
auto n = 2 | 1 & 4; // 2
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具