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

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

Posted by jck11 at 痞客邦 PIXNET Comments(5) Trackback(0) Hits(2661)


open trackbacks list Trackbacks (0)

Comments (5)

Post Comment
  • 交換變數方法

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

    jck11replied on 2007/11/24 20:06

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

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

    恩..我上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;
    這樣嗎??
    然後我就看不懂了!!!
  • 加減法可以用來算浮點數,但布林只能拿來做整數運算

Comment Permissions: Allow commenting

Leave Comment

*Name/Nickname
E-mail
Personal Website
Comment Title
*Comment
* Private Comment