今天码一个函数时用到交换两数值。用了异或的方法。
void swap(int *p,int *q)
{
*p=*p^*q;
*q=*p^*q;
*p=*p^*q;
}
调试的时候遇到诡异的错误,反复调试发现问题所在是用这种方法在使用地址传参的时候不能交换同一个地址的数,否则结果将变成0.所以在调用swap函数的时候一定要先判断两个指针参数是否指向同一个地址,否则会出错啦。。。
今天码一个函数时用到交换两数值。用了异或的方法。
void swap(int *p,int *q)
{
*p=*p^*q;
*q=*p^*q;
*p=*p^*q;
}
调试的时候遇到诡异的错误,反复调试发现问题所在是用这种方法在使用地址传参的时候不能交换同一个地址的数,否则结果将变成0.所以在调用swap函数的时候一定要先判断两个指针参数是否指向同一个地址,否则会出错啦。。。