【问题标题】:What does ^= mean in C/C++?^= 在 C/C++ 中是什么意思?
【发布时间】:2011-07-07 16:07:12
【问题描述】:

我有以下代码行:

contents[pos++] ^= key[shift++];

运营商^=是什么意思?

【问题讨论】:

  • sigh 在上网之前,我的办公桌上有一本很旧的书,叫做《C 编程语言》。这类问题的答案总是在那本书中。
  • @Greg 现在在你的 Kindle 上?
  • @Greg Hewgill:亲爱的年轻一代——你们这一代很糟糕。真诚地, 自古以来的每一代人。 :)
  • 标记这个C++而不给出数组的类型只是一个精心制作的巨魔对吧?使用运算符重载,几乎不可能在没有额外信息的情况下告诉你这行代码做了什么。
  • @glowcoder: 这本书在他的Kindle上,这就是为什么屏幕裂了......(有点沉重的书)

标签: c++ c syntax operators


【解决方案1】:

这是一个按位异或运算符。

x ^= y

基本上是

x = x ^ y

当然,这是按位运算

http://en.wikipedia.org/wiki/Bitwise_operation

【讨论】:

    【解决方案2】:

    【讨论】:

    • 但具体来说,它将 XOR 的结果分配回左侧参数。
    【解决方案3】:

    这意味着使用key[shift++]contents[pos++] 上执行XOR operation 并设置contents[pos++] 等于结果。

    例子:

    contents[pos++]     00010101
    key[shift++]        10010001
                        --------
                        10000100
    

    【讨论】:

      【解决方案4】:

      它是XOR 赋值运算符。基本上:

      x ^= y;
      

      等同于:

      x = x ^ y;
      

      【讨论】:

      • 这当然是假设^= 运算符没有被重载到谁知道呢。 :-)
      • 另外你应该指出,它不仅是 C[++] 语言的一部分,而且在许多语言中也是如此。
      猜你喜欢
      • 2013-03-09
      • 1970-01-01
      • 2016-04-19
      • 2015-04-11
      • 2012-04-25
      • 2011-08-25
      • 2016-04-03
      • 2011-11-26
      • 1970-01-01
      相关资源
      最近更新 更多