#include <stdio.h>
#define swap(t,a,b) / /* 使用宏来完成两个同类型变量的交换 */
{/
*(t *)a = *(t *)a^*(t *)b;/
*(t *)b = *(t *)a^*(t *)b;/
*(t *)a = *(t *)a^*(t *)b;/
}
void swap1(int *a, int *b)
{
*a = *a^*b;
*b = *a^*b;
*a = *a^*b;
}
void swap2(void *a, void *b)
{
*(int *)a = *(int *)a^*(int *)b;
*(int *)b = *(int *)a^*(int *)b;
*(int *)a = *(int *)a^*(int *)b;
}
int main()
{
int a = 30, b = 4000;
printf("a = %d/nb = %d/n", a, b);
/*swap1(&a, &b);*//* this is also ok to swap two integer number*/
swap2((void *)&a, (void *)&b);
/*swap(int, &a, &b);*//* works well */
printf("a = %d/nb = %d/n", a, b);
return 0;
}