首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

值的互换,该怎么处理

2012-05-06 
值的互换#includestdio.hvoid swap(int *x,int *y){*x*x^*y*y*y^*x*x*x^*y}int main(){int a[2]{

值的互换
#include<stdio.h>

void swap(int *x,int *y)
{
  *x=*x^*y;
  *y=*y^*x;
  *x=*x^*y;
}

int main()
{
  int a[2]={23,4};
  swap(&a[0],&a[1]);
  printf("%d %d\n",a[0],a[1]);
  swap(&a[0],&a[0]);
  printf("%d",a[0]);
  getchar();
  return 1;
}
这个程序的输出结果是
4 23
0
我就是没弄明白的是为什么swap(&a[0],&a[0]);这句代码执行后a[0]的值就变为了0;


[解决办法]
swap(&a[0],&a[0])函数内部:由于x与y地址相同,所以执行*x=*x^*y;后导致*x的值变为0,
之后再进行操作也都是0值的异或操作了,所以最后是0

热点排行