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

C語言不使用暫存變數交換兩數:XOR 交換法

     編輯:關於C語言

程式碼

#include 

void main() {
    int a = 1, b = 2;
    a = a ^ b;
    b = a ^ b;
    a = a ^ b;
    printf("a=%d\n", a);
    printf("b=%d\n", b);
}

原理

XOR 性質:x ^ x = 0、x ^ 0 = x、交換律、結合律。

  1. a = a ^ b → a 存 a⊕b
  2. b = a ^ b = (a⊕b)⊕b = a → b 得到原 a
  3. a = a ^ b = (a⊕b)⊕a = b → a 得到原 b

注意事項

  • 不可用於同一變數:swap(x, x) 會將 x 歸零。
  • 現代 CPU 暫存變數法同樣快,且無別名問題,實務首選暫存變數法。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved