#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
//异或交换方式效率没有,临时变量的高,通常还是用临时变量法
int main()
{//异或:同为0,异为1
int a = 10;//00000000 00000000 00000000 00001010
int b = 20;//00000000 00000000 00000000 00010100
a = a ^ b;
b = a ^ b;
a = a ^ b;
printf("%d %d", a, b);
}
// a=00000000 00000000 00000000 00001010=10
// b=00000000 00000000 00000000 00010100
// a=a^b=00000000 00000000 00000000 00011110
// a=00000000 00000000 00000000 00011110
// b=00000000 00000000 00000000 00010100
// b=a^b=00000000 00000000 00000000 00001010=[10]
// a=a^b=00000000 00000000 00000000 00011110
// b=a^b=00000000 00000000 00000000 00001010
// a=00000000 00000000 00000000 00010100=[20]
//a和b异或得到新的异或a
//新的异或a和旧的b异或,得到新的异或b
//新的异或a和新的异或b异或,得到a实现交换
//异或交换方式效率没有,临时变量的高,可读性也差,通常还是用临时变量法
这种异或的方法,不是单一考究10和20这2个数的二进制形式,找规律的解决方法,他也使用与其他的数
创建临时变量tmp,实现的交换
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
fun(int *x,int *y)
{
int tmp;
tmp = *x; *x = *y; *y = tmp;
}
int main()
{
int a, b;
a = 8; b = 3;
fun(&a, &b);
printf("%d %d", a, b);
}