このツールが役に立ったら、開発者にコーヒーを奢ってください ☕
快速查询C++运算符优先级与结合性,辅助理解复杂表达式求值顺序。
::スコープ解決左結合限定命名空间、类或枚举的成员,如 std::cout、Foo::bar。
std::vector<int>a++後置演算左結合返回当前值后将变量加 1。
i++a--後置演算左結合返回当前值后将变量减 1。
i--type()後置演算左結合通过类似构造函数调用的形式进行类型转换。
int(3.14)type{}後置演算左結合C++11 起使用花括号进行类型转换或临时对象初始化。
double{1}a()後置演算左結合调用函数、函数对象或仿函数。
std::printf("hi")a[]後置演算左結合访问数组、容器或重载了 operator[] 的对象的元素。
arr[0].後置演算左結合访问对象的非指针成员(字段、方法)。
obj.name->後置演算左結合通过指针访问对象的成员,等价于 (*p).x。
p->next++a単項演算右結合先将变量加 1,再返回新值。
++i--a単項演算右結合先将变量减 1,再返回新值。
--i+a単項演算右結合返回操作数的值,触发整型提升。
+x-a単項演算右結合返回操作数的相反数。
-x!単項演算右結合对布尔值取反,0/false 变为 true,否则为 false。
!ready~単項演算右結合对整数按位取反,每一位 0 变 1、1 变 0。
~mask(type)単項演算右結合将表达式显式转换为目标类型,能力强但安全性低。
(int)3.14*a単項演算右結合读取指针指向的对象。
*p&a単項演算右結合获取对象在内存中的地址。
&valuesizeof単項演算右結合返回类型或表达式占用的字节数,编译期求值。
sizeof(int)co_await単項演算右結合C++20 起暂停协程并等待 awaitable 的结果。
co_await tasknew単項演算右結合在堆上分配并构造对象,返回指针。
new int(5)new[]単項演算右結合在堆上分配数组并构造元素。
new int[10]delete単項演算右結合析构并释放由 new 分配的单个对象。
delete pdelete[]単項演算右結合析构并释放由 new[] 分配的数组。
delete[] arr.*メンバへのポインタ左結合通过成员指针访问对象的成员。
(obj.*memPtr)->*メンバへのポインタ左結合通过指针和成员指针访问对象的成员。
(ptr->*memPtr)*乗除算・剰余左結合两个操作数相乘。
a * b/乗除算・剰余左結合整数除法向零截断;浮点除法保留小数。
10 / 3%乗除算・剰余左結合返回整数相除的余数,操作数必须为整型。
10 % 3+加減算左結合两个数值相加,或指针与整数相加。
a + b-加減算左結合两数相减,或两个指针相减得到偏移量。
a - b<<シフト演算左結合整数按位左移,或在 iostream 中表示流输出。
1 << 3>>シフト演算左結合整数按位右移,或在 iostream 中表示流输入。
8 >> 2<=>三方比較左結合C++20 起返回 std::strong_ordering / weak_ordering / partial_ordering。
a <=> b<関係演算左結合比较两个操作数,左小于右返回 true。
a < b<=関係演算左結合左小于或等于右返回 true。
a <= b>関係演算左結合比较两个操作数,左大于右返回 true。
a > b>=関係演算左結合左大于或等于右返回 true。
a >= b==等価比較左結合判断两个值是否相等。
a == b!=等価比較左結合判断两个值是否不相等。
a != b&ビット演算左結合两个整数按位执行逻辑与。
a & b^ビット演算左結合两个整数按位执行异或,相同为 0,不同为 1。
a ^ b|ビット演算左結合两个整数按位执行逻辑或。
a | b&&論理演算左結合短路逻辑与:左操作数为 false 时不计算右操作数。
a && b||論理演算左結合短路逻辑或:左操作数为 true 时不计算右操作数。
a || b?:条件演算右結合根据条件返回两个表达式之一。
x > 0 ? 1 : -1throw条件演算右結合抛出异常对象,由匹配的 catch 捕获。
throw std::runtime_error("err")co_yield条件演算右結合C++20 起从生成器协程中产出一个值。
co_yield value=代入演算右結合将右操作数的值赋给左操作数。
x = 10+=代入演算右結合x = x + y 的简写。
x += 1-=代入演算右結合x = x - y 的简写。
x -= 1*=代入演算右結合x = x * y 的简写。
x *= 2/=代入演算右結合x = x / y 的简写。
x /= 2%=代入演算右結合x = x % y 的简写。
x %= 3<<=代入演算右結合x = x << y 的简写。
x <<= 2>>=代入演算右結合x = x >> y 的简写。
x >>= 2&=代入演算右結合x = x & y 的简写。
x &= 0xFF^=代入演算右結合x = x ^ y 的简写。
x ^= mask|=代入演算右結合x = x | y 的简写。
x |= 0x01,カンマ演算左結合依次求值左、右操作数,结果为右操作数的值。常用于 for 语句的步进表达式。
for (int i=0,j=9; i<j; ++i,--j)在编写C++代码时,复杂的表达式常常因为运算符优先级和结合性不明确而导致逻辑错误。本工具帮助您快速查询任意C++运算符的优先级数值与结合性方向(左结合或右结合),通过动态表格和搜索输入,将原本需要翻阅标准文档的步骤简化为即时在线查询,输出该运算符的排名、结合性及典型用法,让表达式求值顺序一目了然。
==、&&、>>,或输入中文关键词如“逻辑与”。*,输出优先级 5,结合性“左结合”,说明“乘法/解引用”。::优先级为1(最高),逗号运算符优先级为17(最低)。a = b = c 能正确赋值? 结合性决定了运算方向。赋值运算符 = 是右结合,因此 a = b = c 被理解为 a = (b = c)。查询结果会明确标注每个运算符的结合性,避免误读。本工具基于ISO C++标准所列运算符及其优先级,适用于 C++98 至 C++23 主要版本,但不包含编译器特定扩展。输入搜索时请使用半角符号,中文翻译关键词仅供参考。结果仅作为编码参考,实际表达式建议多加括号以增加可读性。本工具为纯前端查询,不会保存或上传您的查询内容,请放心使用。如果输入符号未被识别,请检查拼写或直接浏览完整优先级列表。
运算符优先级与结合性在重载运算符时依然成立,您无法通过重载改变其优先级。在模板元编程或宏定义中,合理使用括号比依赖默认优先级更加安全。典型例子:cout << a & b; 会因为位与 & 优先级低于移位而引发编译错误,应写成 cout << (a & b);。若不确定某个运算符的相对顺序,随时用本工具对照优先级表,可有效避免此类优先级陷阱。