2014年10月25日 星期六

寫一個前置處理器的巨集,可交換兩個整數(如果你是屬於駭客級,就不要透過宣告在巨集外部的暫時變數)

#define swap(x,y) {x=x^y;y=x^y;x=x^y;}  //a,b數值交換

x=x^y
//表示將 x xor y 之後的值存至x  又因為 xor有可逆性所以可以看做 x在這等式之後成為x與y的綜合體
y=x^y
//因為可逆性,所以將這個綜合體x與y結合,會還原成原本的x,此時將結果存為y
x=x^y
//此時的y內存的結果已經為一開始的x了,所以x^y的結果為  x與y的綜合體在與x做運算,得到一開始的y,存為x。
swap結束

沒有留言:

張貼留言