int a=1;
int b=2;
a=a+b;
b=a-b;
a=a-b;
網上解釋:
缺點:是只能用于數字類型,字符串之類的就不可以了。a+b有可能溢出(超出int的范圍),溢出是相對的, +了溢出了,-回來不就好了,所以溢出不溢出沒關系,就是不安全。
1.異或算法(這種方法不借助第三個變量,也不會產生溢出,比較安全,但僅限整數類型)
int a, b; a = 20; b = 2;a = a ^ b;//a=10100,b=0010,兩者相異或的結果是10110,并保存在a中。 b = a ^ b;//a=10110,b=0010,兩者相異或的結果是10100,并保存在b中,換成是20a = a ^ b;//a=10110,b=10100,兩者相異或的結果是00010,保存在a中,換成十進制是2先將a,b轉化為二進制在進行比較,若兩個二進制位相同,則結果為0,不同為1第一步:a和b不相同取a(a=10100,b=0010)第二步:a和b不相同取a(a=10110,b=10110)第三步:a和b相同取b(a=0010)a⊕b = (?a ∧ b) ∨ (a ∧?b)異或算法3,直接賦值
int a=1;
int b=2;
b = a + (a = b) * 0;或者a = a + b - (b = a);注:以下博客太深奧非專業人士勿進http://blog.csdn.net/kangkermit/article/details/21371159
|
新聞熱點
疑難解答