前どっかのスレで書いたコード
多分どんな型でもOKなSwapマクロ

#include <stdio.h>

#define Swap(a,b) \
{\
char static_assert[sizeof(a)==sizeof(b)];\
typedef struct { char buf[sizeof(a)]; } temp;\
temp t=*(temp *)&a;\
a=b;\
*(temp *)&b=t;\
}

int main(){
int a=0,b=1;
Swap(a,b);
printf("a=%d,b=%d\n",a,b);
}