首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> C++ 入門

C++ 運算符與表達式完整教程:優先級、結合性、類型轉換與重載

     編輯:C++ 入門

C++ 運算符與表達式完整教程:優先級、結合性、類型轉換與重載

運算符分類總覽

類別運算符
算術+ - * / % ++ --
關系> < == >= <= !=
邏輯&& || !
位運算<< >> & | ^ ~
賦值= += -= *= /= %= <<= >>= &= ^= |=
條件?:
逗號,
指針/引用* & -> .
其他sizeof (type) [] ()

算術運算細節

  • 整數除法截斷向零(C++11 規定):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))
  • 完整優先級表請查閱 C++ 標準文檔

自增自減運算符

形式效果返回值
++ii=i+1新值
i++i=i+1舊值
--ii=i-1新值
i--i=i-1舊值

只能用於左值(變量),右結合。複雜表達式中易產生未定義行為,建議拆分語句。

強制類型轉換

  • C 風格:(type)expr 或 (type)(expr)
  • C++ 風格:type(expr)(函數式語法)
  • 四大專用轉換(推薦):
    static_cast、dynamic_cast、const_cast、reinterpret_cast
  • 轉換產生臨時值,原變量不變

賦值運算符與表達式

  • a = 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,整體值為 expr2
  • 最低優先級,常用於 for 循環多變量初始化/更新
  • cout << (a=3, a*4) 輸出 12,需加括號區分參數

表達式求值順序

C++17 前參數求值順序未指定(除 && || , ?: 等有短路/順序點),C++17 規定函數參數按任意順序但不可交織。不依賴副作用順序是良習。

運算符重載(C++ 特有)

  • 可重載大多數運算符,除 .: :: ?: sizeof typeid
  • 重載為成員函數或友元函數
  • 保持語義直觀:+ 應返回新對象,+= 修改自身返回引用

掌握運算符優先級、結合性、類型轉換規則,是編寫正確、高效 C++ 代碼的基礎。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved