您的位置:首页 > 其它

交换两个数的值

2017-03-14 11:30 162 查看
一、指针

int a = 10,b = 20;
int *pa = &a;
int *pb = &b;
NSLog(@"a的地址 = %p, b的地址 = %p",pa,pb);
NSLog(@"交换前:pa指向的值 = %d, pb指向的值 = %d",*pa,*pb);
if (pa < pb) {
pa = (int *)(pb - pa);
pb = (int *)(pb - ((int)pa & 0x0000ffff));
pa = (int *)(pb + ((int)pa & 0x0000ffff));
}else {
pb = (int *)(pa - pb);
pa = (int *)(pa - ((int)pb & 0x0000ffff));
pb = (int *)(pa + ((int)pb & 0x0000ffff));
}
NSLog(@"a的地址 = %p, b的地址 = %p",pa,pb);
NSLog(@"交换后:pa指向的值 = %d, pb指向的值 = %d",*pa,*pb);


二、异或

a ^= b;
b ^= a;
a ^= b;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: