| 類別 | 運算符 |
|---|---|
| 算術 | + - * / % ++ -- |
| 關系 | > < == >= <= != |
| 邏輯 | && || ! |
| 位運算 | << >> & | ^ ~ |
| 賦值 | = += -= *= /= %= <<= >>= &= ^= |= |
| 條件 | ?: |
| 逗號 | , |
| 指針/引用 | * & -> . |
| 其他 | sizeof (type) [] () |
5/3=1, -5/3=-1% 兩側必為整型,結果符號同被除數int + float → double(float 先升為 double)a+b*c → a+(b*c)a-b+c → (a-b)+c)a=b=c → a=(b=c))| 形式 | 效果 | 返回值 |
|---|---|---|
| ++i | i=i+1 | 新值 |
| i++ | i=i+1 | 舊值 |
| --i | i=i-1 | 新值 |
| i-- | i=i-1 | 舊值 |
只能用於左值(變量),右結合。複雜表達式中易產生未定義行為,建議拆分語句。
(type)expr 或 (type)(expr)type(expr)(函數式語法)static_cast、dynamic_cast、const_cast、reinterpret_casta = b = c = 5 合法,值為 5,右結合a += b ≡ a = a + b(注意 a *= b+c ≡ a = a * (b+c))(a=3)*5=4*3 需加括號使左值合法expr1, expr2:先算 expr1,再算 expr2,整體值為 expr2for 循環多變量初始化/更新cout << (a=3, a*4) 輸出 12,需加括號區分參數C++17 前參數求值順序未指定(除 && || , ?: 等有短路/順序點),C++17 規定函數參數按任意順序但不可交織。不依賴副作用順序是良習。
.: :: ?: sizeof typeid+ 應返回新對象,+= 修改自身返回引用掌握運算符優先級、結合性、類型轉換規則,是編寫正確、高效 C++ 代碼的基礎。