C语言,以下程序的运行结果是?

以下程序的运行结果是?
#include "stdio.h"
#define sw(x,y) {x^=y;y^=x;x^=y;}
main()
{
int a=10,b=01;
sw(a,b);
printf("%d,%d\n",a,b);
}

答案是1,10
为什么我算出来和答案正好相反?
那个b=01是否代表8进制数的1?能否写下计算过程?谢谢~

第1个回答  2008-04-29
#define sw(x,y) {x^=y;y^=x;x^=y;}

这个宏的作用就是在不借助第三变量的情况下,交换x和y的值,^是位异或运算符,x^=y相当于x=x^y,具体什么是位异或运算,可以在网上轻意找到相关教材。

b=01代表8进制数的1,1在任何进制计数系统中都相等。
第2个回答  2008-04-29
(x=10,y=1;)
x^=y;->x=00001010^00000001=00001011
y^=x;->y=00000001^00001011=00001010
x^=y;->x=00001011^00001010=00000001
(x=1,y=10)本回答被提问者采纳
第3个回答  2008-04-29
#define sw(x,y) {x^=y;y^=x;x^=y;} ??????/////
相似回答