美文网首页
不使用第三个变量,交换两个变量的值

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

作者: 溪桥星雨 | 来源:发表于2020-09-13 19:41 被阅读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

相关文章

网友评论

      本文标题:不使用第三个变量,交换两个变量的值

      本文链接:https://www.haomeiwen.com/subject/inroektx.html