适用于int和float类型的两个变量之间相互交换
#define SWAP(a, b) do { \
*((unsigned*)&a) = *((unsigned*)&a) ^ *((unsigned*)&b); \
*((unsigned*)&b) = *((unsigned*)&a) ^ *((unsigned*)&b); \
*((unsigned*)&a) = *((unsigned*)&a) ^ *((unsigned*)&b); \
} while(0)