工具用的順手嗎?
你的回饋能幫助我們做得更好
快速查詢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++ 標準規定的分數。
優先順序描述不同運算子相鄰時,語法如何把運算元組成子運算式。例如乘法比加法優先,a + b * c 的分組相當於 a + (b * c)。結合性則用來理解同一優先層級連續出現時的分組方向,例如賦值運算子向右結合:a = b = c 對應 a = (b = c)。
「分組」不等於程式執行時各運算元的求值先後。C++ 標準以文法規則形成運算子優先順序,並不賦予每個運算子一個可計算的優先權分數;因此表格級別只是查閱輔助。即使多載運算子,運算子的語法優先順序也不會改變。
指南
依步驟完成操作,並透過範例核對輸入與結果。
輸入半形運算子符號,例如 &&、<<、<=>,或輸入名稱、例子中的文字。關鍵詞會比對符號、名稱、說明、示例及級別;不必貼上整段程式碼。
選擇運算子分類,例如位移、比較、邏輯或賦值,也可選左結合、右結合或無結合性。多個條件會同時套用;若沒有結果,先清除分類與結合性,再檢查符號是否為半形。
結果按級別由小到大排列。較小的數字表示該表中相對較高的優先順序;同一級別則閱讀結合性和例子,理解語法分組。可複製單一運算子符號或示例,帶回自己的程式碼情境核對。
情境
查看這項工具在不同工作與生活流程中的用法。
閱讀舊程式時,先查出比較、位元或邏輯運算子的相對分組,再把容易誤讀的部分補上括號,確認括號結構是否符合原意。
初學者可先預測 x + y * z 的分組,再查乘法與加法條目,對照為何可寫成 x + (y * z)。這種練習聚焦於語法,不代表查詢器會計算式子的值。
團隊成員遇到多層條件或位元運算時,可用分類及結合性快速定位規則,再以括號清楚表達預期分組,減少讀者只靠記憶判斷的負擔。
問答
集中解答常見疑問與容易混淆的問題。
在這份表中,數字越小表示相對優先順序越高、語法分組越緊。它只是表格排序標示,不是標準定義的優先權數值。
不會。優先順序和結合性說明語法如何分組;運算元實際何時求值由 C++ 的其他規則決定,不能只憑表格推斷。
不可以。多載可以為自訂型別提供運算子操作,但運算子在表達式中的語法優先順序仍依 C++ 規則。
確認使用半形符號,並檢查分類或結合性篩選是否排除了條目。也可以改搜運算子名稱、說明或示例中的字詞,或清空關鍵詞瀏覽全部條目。
須知
使用前了解適用範圍、結果限制與必要提醒。
此頁提供靜態運算子參考資料,不會解析、編譯或執行貼上的表達式,也不會判斷型別是否相容、程式是否有效或結果是否符合需求。表內說明和示例適合快速定位概念;遇到複雜或版本相關語法,請查看對應 C++ 標準資料,並以專案所用編譯器核實。若表格分組與你的意圖不同,使用括號明確表示子運算式,再分別檢查求值順序及其他語言規則。
推薦
查找相關工具、專題與可用的 API 能力。