其实就是赋值转换了原来的a,b;
a = b - a 给a赋值为b a之间的差值
b = b - a 此处a为新的a, b=b-差值=b-(b-a)=原来的a
a = a + b 此处a为差值,b为原来的a, a=差值+a=b-a+a=原来的b
由此交换。
a = b - a
b = b - a
a = a + b
// 举个例子: a = 5 b = 3
a = 3 - 5
b = 3 - (3 - 5) = 5
a = (3 - 5) + 3 - ( 3 - 5) = 3
这里 就实现了 a 和 b 交换
以前我只晓得位运算的异或可以交换两个整数,原来还有加减也可以😋
#!/sur/bin/nve python
# coding: utf-8
a, b = 56, 89
print(f"\na = {a}, b = {b}")
a = b - a
b = b - a
a = b + a
print(f"\n加减操作后:\na = {a}, b = {b}")
a = b ^ a
b = b ^ a
a = b ^ a
print(f"\n异或操作后:\na = {a}, b = {b}")
本来不懂其理,看过楼上答主解析,明白过来。谢谢楼主分享🤝🤝🤝
涨姿势了🤗🤗🤗
【相关推荐】
1 #include <stdio.h>
2 int main()
3 {
4 int a[10] = {2,4,6,8,12,14,15,23,29};
5 int i,j,temp;
6 printf ("Enter an integer:\n");
7 scanf ("%d",&temp);
8
9 if (temp<a[0]) // 如果比a[0]小,则原数组依次向后顺移,补充a[0]为输入的temp
10 {
11 for (i=8;i>=0;i--)
12 {
13 a[i+1] = a[i];
14 }
15 a[0] = temp;
16 }
17 else
18 {
19 for (i=8;i>=0;i--)
20 {
21 if (temp < a[i])
22 {
23 a[i+1] = a[i];
24 }
25 else
26 {
27 a[i+1] = temp;
28 break;
29 }
30 }
31 }
32 for (j=0;j<10;j++)
33 {
34 printf ("%5d",a[j]);
35 }
36 printf ("\n");
37 return 0;
38 }