不用第三方变量交换两个数的值

1.利用两数之和减去另一个数的方式:

    NSInteger a=3,b=5;

    a=a+b;

    b=a-b;

    a=a-b;

    NSLog(@"a=%ld,b=%ld",a,b);

打印:a=5,b=3

 

2.利用位运算 ^ (异或):

异或的特点是:一个数据a与另一个数据b做异或运算之后,变成了另外一个数c,再读取这个数据就不是原来的数据了,我们如果再拿这个数据c和数据b异或一次,这个数据又变回原来的数据a。

即:a^b^b=a;   a^b^a=b

所以我们可以利用这个特点交换两个数据:

    NSInteger a=3,b=5;

    a=a^b;

    b=a^b;

    a=a^b;

    NSLog(@"a=%ld,b=%ld",a,b);

打印:a=5,b=3

             

猜你喜欢

转载自www.cnblogs.com/huangzs/p/9661851.html
今日推荐