分类：电脑/网络-程序设计-C/C++
问题：C语言的问题以下程序不借助任何变量把a,b中的指进行交换，请填空 
以下不借助任何变量把a,b中的指进行交换，请填空。#include<stdio.h>main(){int a,b; printf("input a,b:"); scanf("%d%d",__1___); a+=__2___;b=a-__3___;a-=__4___; printf("a=%d b=%d\n",a,b);}答案是什么啊？怎么做的，请高人指点！
回答：我的答案是：

&a,&b;
a+=b;
b=a-b;
a-=b;

我不同意楼上的意见。
假设
a=0xFF00
b=0x00FF

a XOR b=

    0xFF00
XOR 0x00FF
-----------
  = 0x0000

则运算第2空时：a+=(a^b)-a，展开为：a=a+(a^b)-a，化简为a=a^b结果为0。
运算第3空时：b=a-(a-(b^a)),展开并化简为b=b^a，结果为0。
至此，a==0，b==0，连值都没了！