#include <stdio.h>
#include <inttypes.h>
#define SWAP(a,b) do ((&(a))!=(&(b)))?((a)^=(b)^=(a)^=(b)):((a)=(a)); while (0)
char *p1="1" ,*p2="2" ;
char c1=1 , c2=2 ;
short s1=1 , s2=2 ;
int i1=1 , i2=2 ;
int64_t I1=1ll, I2=2ll;
float f1=1.0f, f2=2.0f;
double d1=1.0 , d2=2.0 ;
int main() {
SWAP(*(int*)&p1,*(int*)&p2); printf("char * %5s, %5s\n",p1,p2);
SWAP(c1,c2); printf("char %5d, %5d\n",c1,c2);
SWAP(s1,s2); printf("short %5d, %5d\n",s1,s2);
SWAP(i1,i2); printf("int %5d, %5d\n",i1,i2);
SWAP(I1,I2); printf("__int64 %5lld,%5lld\n",I1,I2);
SWAP(*(int *)&f1,*(int *)&f2);printf("float %5g, %5g\n",f1,f2);
SWAP(*(int64_t *)&d1,*(int64_t *)&d2);printf("double %5lg, %5lg\n",d1,d2);
SWAP(c1,c1);
printf("%d\n",c1);
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxpbnR0eXBlcy5oPgojZGVmaW5lIFNXQVAoYSxiKSBkbyAoKCYoYSkpIT0oJihiKSkpPygoYSlePShiKV49KGEpXj0oYikpOigoYSk9KGEpKTsgd2hpbGUgKDApCmNoYXIgICAqcDE9IjEiICwqcDI9IjIiIDsKY2hhciAgICBjMT0xICAgLCBjMj0yICAgOwpzaG9ydCAgIHMxPTEgICAsIHMyPTIgICA7CmludCAgICAgaTE9MSAgICwgaTI9MiAgIDsKaW50NjRfdCBJMT0xbGwsIEkyPTJsbDsKZmxvYXQgICBmMT0xLjBmLCBmMj0yLjBmOwpkb3VibGUgIGQxPTEuMCAsIGQyPTIuMCA7CmludCBtYWluKCkgewogICAgU1dBUCgqKGludCopJnAxLCooaW50KikmcDIpOyAgICAgICAgICAgICAgICBwcmludGYoImNoYXIgKiAgICAgJTVzLCAgICU1c1xuIixwMSxwMik7CiAgICBTV0FQKGMxLGMyKTsgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiY2hhciAgICAgICAlNWQsICAgJTVkXG4iLGMxLGMyKTsKICAgIFNXQVAoczEsczIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJzaG9ydCAgICAgICU1ZCwgICAlNWRcbiIsczEsczIpOwogICAgU1dBUChpMSxpMik7ICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoImludCAgICAgICAgJTVkLCAgICU1ZFxuIixpMSxpMik7CiAgICBTV0FQKEkxLEkyKTsgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiX19pbnQ2NCAlNWxsZCwlNWxsZFxuIixJMSxJMik7CiAgICBTV0FQKCooaW50ICAgICAqKSZmMSwqKGludCAgICAgKikmZjIpO3ByaW50ZigiZmxvYXQgICAgICAlNWcsICAgJTVnXG4iLGYxLGYyKTsKICAgIFNXQVAoKihpbnQ2NF90ICopJmQxLCooaW50NjRfdCAqKSZkMik7cHJpbnRmKCJkb3VibGUgICAgJTVsZywgICU1bGdcbiIsZDEsZDIpOwoKICAgIFNXQVAoYzEsYzEpOwogICAgcHJpbnRmKCIlZFxuIixjMSk7Cn0=