#include <stdio.h>
void swap_i(int* a, int* b)
{
if(*a != *b)
{
*a ^= *b;
*b ^= *a;
*a ^= *b;
}
}
/* 因为float不能进行异或,异或浮点编译器会报错(我还没搞清楚为啥) */
void swap_f(float* a, float *b)
{
if((*a) != (*b))
{
*a = (*a)+(*b)-((*b)=(*a));
}
}
int main()
{
float a=2.123456;
float b=4.654321;
int c = 3;
int d = 5;
printf("start a=%f b=%f c=%d d=%d\n", a, b, c, d);
swap_f(&a, &b);
swap_i(&c, &d);
printf("end a=%f b=%f c=%d d=%d\n", a, b, c, d);
}
运行结果
start a=2.123456 b=4.654321 c=3 d=5
end a=4.654321 b=2.123456 c=5 d=3