#include <stdio.h>
int main()
{
float a = 3.14f;
float b = -5.23f;
*(int*)(&a) ^= *(int*)(&b);
*(int*)(&b) ^= *(int*)(&a);
*(int*)(&a) ^= *(int*)(&b);
printf("%f %f",a,b);
return 0;
}
单精度浮点数在内存里占4个字节,里面的内容我们将其当做整数来处理,就可以使用异或运算,避免使用临时变量。
#include <stdio.h>
int main()
{
float a = 3.14f;
float b = -5.23f;
*(int*)(&a) ^= *(int*)(&b);
*(int*)(&b) ^= *(int*)(&a);
*(int*)(&a) ^= *(int*)(&b);
printf("%f %f",a,b);
return 0;
}
单精度浮点数在内存里占4个字节,里面的内容我们将其当做整数来处理,就可以使用异或运算,避免使用临时变量。