1. 程式人生 > >C#基礎學習-交換兩個數字的值

C#基礎學習-交換兩個數字的值

    //有兩個數字10、20,編寫程式交換兩個數字的值        

int num1 = 10;
            int num2 = 20;
            #region 第一種


            int temp = num1 + num2;
            num2 = temp - num1;
            num1 = temp - num2;


            #endregion


            #region 第二種


            //+- 相當於 |(或)^ (異或)
            //加法 計算機中 0010+ 0001=0011
            //減法 0010-0001=0001
            //或運算 | 規則:只要有一位為1 結果就為1 0|0=0 0|1=1 1|1=1 1|0=1
            //位運算  二級制每一位操作0010|0001=0011
            //異或 ^ 規則: 相同是為0相異為1 0010^0001=0011 
            num1 = num1 | num2;
            num2 = num1 ^ num2;
            num1 = num1 ^ num2;


            #endregion


            #region  第三種


            int a = 10;
            int b = 20;
            a = b + (b = a) * 0;
            //b = (a) + (a = b) * 0; 都可以改變過來
            //程式碼從左往右執行 從上至下執行
            //變數在記憶體中是壓棧的處理過程
            //這種方法它只針對數字
            //可移植性差  太抽象 不好理解


            #endregion