C 交換兩個變數值的多種寫法

2022-01-18 23:39:17 字數 2863 閱讀 7868

在學習.net/c#或者任何一門物件導向語言的初期,大家都寫過交換兩個變數值,通常是通過臨時變數來實現。本篇使用多種方式實現兩個變數值的交換。

假設int x =1; int y = 2;現在交換兩個變數的值。

使用臨時變數實現

static void main(string args)
,y=",x, y);
int temp = x;
x = y;
y = temp;
console.writeline("x=,y=", x, y);
console.readkey();
}

使用加減法實現

試想, 1+2=3,我們得到了兩數相加的結果3。3-2=1,把1賦值給y,y就等於1; 3-1=2,把2賦值給x,這就完成了交換。

static void main(string args)
,y=",x, y);
x = x + y; //x = 3
y = x - y; //y = 1
x = x - y; //x = 2
console.writeline("x=,y=", x, y);
console.readkey();
}

使用ref和泛型方法實現

如果把交換int型別變數值的演算法封裝到方法中,需要用到ref關鍵字。

static void main(string args)
,y=",x, y);
swap(ref x, ref  y);
console.writeline("x=,y=", x, y);
console.readkey();
}
static void swap(ref int x, ref int y)

如果交換string型別的變數值,就要寫乙個swap方法的過載,讓其接收string型別:

static void main(string args)
,y=",x, y);
swap(ref x, ref  y);
console.writeline("x=,y=", x, y);
console.readkey();
}
static void swap(ref int x, ref int y)
static void swap(ref string x, ref string y)

如果交換其它型別的變數值呢?我們很容易想到通過泛型方法來實現,再寫乙個泛型過載。

static void main(string args)
,y=",x, y);
swap<

string

>(ref x, ref y);

console.writeline("x=,y=", x, y);
console.readkey();
}
static void swap(ref int x, ref int y)
static void swap(ref string x, ref string y)
static void swap<

t>(ref t x, ref t y)

使用按位異或運算子實現

對於二進位制數字來說,當兩個數相異的時候就為1, 即0和1異或的結果是1, 0和0,以及1和1異或的結果是0。關於異或等位運算子的介紹在這裡:

舉例,把十進位制的3和4轉換成16位二進位制分別是:

x = 0000000000000011;//對應十進位制數字3

y = 0000000000000100; //對應十進位制數字4

把x和y異或的結果賦值給x:x = x ^ y;

x = 0000000000000111;

把y和現在的x異或,結果賦值給y:y = y ^ x

y = 0000000000000011;

把現在的x和現在的y異或,結果賦值給x:x = x ^ y

x = 0000000000000100;

按照上面的演算法,可以寫成如下:

static void main(string args)
,y=",x, y);
x = x ^ y;
y = y ^ x;
x = x ^ y;
console.writeline("x=,y=", x, y);
console.readkey();
}
"橫看成嶺側成峰,遠近高低各不同",在技術世界裡,可能沒有絕對的簡單或複雜,再複雜的問題可以拆分成簡單的模型;再簡單的問題,從不同的角度看待,使用不同的方式實現,就多了更多的樂趣。

C 交換兩個變數值的多種寫法

在學習.net c 或者任何一門物件導向語言的初期,大家都寫過交換兩個變數值,通常是通過臨時變數來實現。本篇使用多種方式實現兩個變數值的交換。假設int x 1 int y 2 現在交換兩個變數的值。使用臨時變數實現 static void main string args y x,y int te...

交換兩個變數值

交換兩個變數的值 引入第三方變數 int x 5,y 3 int temp 0 temp x x y y temp system.out.println x x t y y 引入第三方變數是很容易解決的!不引入第三方變數 方法一 先求和,然後在從和裡面減掉乙個數,得到另乙個數 int a 3,b 5...

PHP交換兩個變數值

方法一 交換兩個變數的最簡單方法是使用第三個臨時變數 1 2 a 15 3 b 27 4 交換邏輯 5echo 交換前的數字為 6 echo a a.且 b b 7 temp a 8 a b 9 b temp 10 echo 交換後的數字為 11 echo a a.且 b b.輸出 交換前的數字為 ...