不创建临时变量交换两个数的值
法1:
#include<stdio.h>
#include<windows.h>
int main()
{
int x = 100;
int y = 200;
printf("before:%d %d\n", x, y);
x = x + y;
y = x - y;
x = x - y;
printf("after:%d %d\n", x, y);
system("pause");
return 0;
}
法2:(任何数和0异或等于它本身)
#include<stdio.h>
#include<windows.h>
int main()
{
int x = 100;
int y = 200;
printf("before:%d %d\n", x, y);
x ^= y;//x=x^y; x->x^y
y ^= x;//y=y^x-> y=y^x^y y->x 支持交换律
x ^= y;//x=x^y-> x=x^y^x x->y
printf("after:%d %d\n", x, y);
system("pause");
return 0;
}