不使用第三个变量,交换两个变量的值

2020-09-13  本文已影响0人  溪桥星雨

看到题目的时候愣了下,很快就有了思路。两个变量还能玩出什么花样?

    int a = 8;
    int b = 4;
    
    a = a + b;//求和保存在a
    b = a - b;//和-b得到原来的a赋值到b,交换一个了。
    a = a - b;//现在的b是原来的a了,和-b就会得到原来的b,赋值给a完成交换
    
    printf("a= %d, b = %d\n",a,b);

运行结果:a= 4, b = 8

这种方式存在溢出的问题。那么可以采用另外一种方式:

    int a = 10;
    int b = 20;
    a = a ^ b;
    b = a ^ b;
    a = a ^ b;
    printf("a=%d\nb=%d\n", a,b);

运行结果:a= 20, b = 10

上一篇 下一篇

猜你喜欢

热点阅读