[bo][un]StarWing83[/un] 在 2008-10-13 20:15 的发言:[/bo]
缺点一:只适合整型。
缺点二:相对于通常的交换代码,速度慢
缺点三:这样写会阻止编译器对通常的交换的优化(X86CPU里面有个交换指令)
所以,大家知道就好了吧,实用的时候就不要这么写了。
缺点一:只适合整型。
缺点二:相对于通常的交换代码,速度慢
缺点三:这样写会阻止编译器对通常的交换的优化(X86CPU里面有个交换指令)
所以,大家知道就好了吧,实用的时候就不要这么写了。
这三个缺点不算什么的,最大的毛病在指针。
如果a,b是两个指针指向的数据,必需判断指针是否相同,否则结果错。用其他的交换算法,交换同一个数就是数值不改变。
int a=3,b=4;
int *p1, *p2;
p1=&a,p2=&a;
*p1=(*p1)^(*p2);
*p2=(*p1)^(*p2);
*p1=(*p1)^(*p2);
printf("%d %d\n",a,b);