法一,直接上代码
#include <stdio.h>
int main(int argc, const char * argv[]) {
int a = 1,b = 2,temp = 3;
printf("交换前:%d %d\n",a,b);
temp = a;
a = b;
b= temp;
printf("交换后:%d %d\n",a,b);
return 0;
}
法二:
#include <stdio.h>
void swap(int *p,int *q){
int temp;
temp = *p;
*p = *q;
*q = temp;
}
int main(int argc, const char * argv[]) {
int a = 1,b = 2;
printf("交换前:%d %d\n",a,b);
swap(&a,&b);
printf("交换后:%d %d\n",a,b);
return 0;
}
法三:
#include <stdio.h>
int main(int argc, const char * argv[]) {
int a = 1,b = 2;
printf("交换前:%d %d\n",a,b);
a = a + b;
b = a - b;
a = a - b;
printf("交换后:%d %d\n",a,b);
return 0;
}
法四:
#include <stdio.h>
int main(int argc, const char * argv[]) {
int a=1,b=2;
a = a^b;
b = a^b;
a = a^b;
printf("%d %d",a,b);
return 0;
}
啊哈,解释一下这个原理咯!
a == 00000000000000000000000000000001,
b == 00000000000000000000000000000010,
如下:
00000000000000000000000000000001 a == 1
00000000000000000000000000000010 b == 2
______________________________________
00000000000000000000000000000011 a == 3
00000000000000000000000000000010 b == 2
______________________________________
00000000000000000000000000000001 b == 1
00000000000000000000000000000011 a == 3
______________________________________
00000000000000000000000000000010 a == 2
总结,小学的知识,有一天看见了,觉得有意思,分享一下!
更新...