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

C 語言僅用兩變量交換 int:異或交換法、加減法、乘除法

     編輯:程式設計綜合問答

方法一:異或交換(推薦,無溢出風險)


int x = 1, y = 2;
x = x ^ y;
y = x ^ y; // 此时 y = x
x = x ^ y; // 此时 x = y

方法二:加減法(可能溢出)


x = x + y;
y = x - y;
x = x - y;

方法三:乘除法(不可為 0,溢出風險大)


x = x * y;
y = x / y;
x = x / y;

注意

  • **異或法**僅適用於**整數類型**,且兩變量**不能指向同一內存地址**(`swap(x, x)` 會歸零)。
  • 現代編譯器優化下,`std::swap`/`std::exchange` 通常生成 `xchg` 指令,**比手寫技巧更快、更安全**。
  • 面試可展示理解,**生產代碼請用標準庫**。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved