zoukankan      html  css  js  c++  java
  • 关于 ^ 异或 及 无中间变量进行交换

    ^代表异或运算。


    如:
    3^5
    3的二进制是11
    5的二进制是101
    011
    101
    -----
    110
    不一样的位结果为1,否则为0.
    110转换成十进制是6

    所以3^5=6


    之前有见到通过 ^ 来进行两值无中间数交换,现解释如下:

    代码:

    void Swap(int &a, int &b)
    {
    a ^= b;
    b ^= a;
    a ^= b;
    }


    a ^= b ==
    a = 原a ^ 原b;


    b ^= a ==
    b = 原b ^ a == 原b ^ (原a ^ 原b) == 原a; //b完成交换


    a ^= b ==
    a = a^b == (原a ^ 原b) ^ 原a == 原b; //a完成交换,至此 a==b;


    附: .与->用法区别


    1 "." 该操作符认为左边的变量是一个结构或者类对象。
    .将取该变量的成员值(操作符右边的成员)。
    2 "->" 该操作符认为左边的变量是一个指针。
    ->将取该指针指向的变量的成员值(操作符右边的成员)。
    所以反推过来,总结这两个操作符是用来访问类对象或结构的成员的操作符。
    1.如果是结构或类对象的变量,使用操作符"."访问成员。
    2.如果是结构或类对象的指针,使用操作符"->"访问成员。

    #END

  • 相关阅读:
    Android 存储 SD卡
    Android 存储 内部存储
    Android 存储 SP存储
    go goroutine
    go 接收命令行参数
    go 文件操作 复制和统计字符
    go 文件操作 判断文件是否存在
    換博客了,新地址https://cutepig123.github.io/
    光盘是个好东西
    俺买过的电子产品
  • 原文地址:https://www.cnblogs.com/yunet/p/12584101.html
Copyright © 2011-2022 走看看