記得在某年的關務考試程式語言科目出了一個題目,
一般在交換兩個整數變數x,y時會這麼寫,
z=x;
x=y;
y=z;
那麼有辦法只用x,y兩個整數變數,
不使用第3個變數的情況下交換x,y的值嗎?

那時因為時間有點趕沒能想出來,
其實用簡單的加減法就能解出。
x=x+y;
y=x-y;
x=x-y;

jck11 發表在 痞客邦 PIXNET 留言(5) 人氣()


留言列表 (5)

發表留言
  • Tsung
  • 交換變數方法

    x ^= y;
    y ^= x;
    x ^= y;
    就互換了 :P
  • 這個程式碼感覺更優雅,謝謝提供:)

    jck11 於 2007/11/24 20:06 回覆

  • 日落
  • XOR 這個方法的優點
    是 CPU 處理邏輯運算的速度比其他運算來的快
  • DragonLee
  • x ^= y;
    y ^= x;
    x ^= y;

    神到了~ 用布林運算換耶~ (拜) 
    (動動腦~可防老 ^^)
  • 小PP
  • 有人可以說明一下嗎?

    恩..我上google查了一下xor運算

    大概是這樣
    0 xor 0 => 0
    0 xor 1 => 1
    1 xor 0 => 1
    1 xor 1 => 0

    所以
    x ^= y;
    y ^= x;
    x ^= y;
    應該是
    x = y xor x;
    y = x xor y;
    x = y xor x;
    這樣嗎??
    然後我就看不懂了!!!
  • EdisonShih
  • 加減法可以用來算浮點數,但布林只能拿來做整數運算