首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C 語言變量交換:中間變量法的兩種寫法本質相同

     編輯:程式設計綜合問答

兩種寫法對比

// 法1
t = a; a = b; b = t; // t 最终值 = 原 a

// 法2
t = b; b = a; a = t; // t 最终值 = 原 b

結論

  • **邏輯完全等價**,僅 `t` 保留的值不同(法1存原 `a`,法2存原 `b`)。
  • 對 `a`、`b` 最終結果**零影響**。
  • 現代編譯器優化後產生的機器碼幾乎相同。

工程建議

  1. 可讀性優先:採用團隊統一風格(通常法1更直觀:先備份 `a`)。
  2. 封裝為函數/宏:
    #define SWAP(type, a, b) do { type t = a; a = b; b = t; } while(0)
    SWAP(int, a, b);
    
  3. 不必追求「無中間變量」技巧(如 `a ^= b ^= a ^= b`),副作用多、可讀性差、無性能優勢。

給初學者的話

程式碼是給人看的,順帶給機器執行。**清晰表達意圖**遠比炫技巧重要。選擇最直觀的寫法,並在必要時封裝復用。

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