【问题标题】:What is this operator: &=这个运算符是什么:&=
【发布时间】:2012-02-13 04:49:45
【问题描述】:

谁能解释一下&=这个运算符是干什么用的?

我进行了搜索,但只得到&= 的结果。

【问题讨论】:

标签: javascript operators bit-manipulation


【解决方案1】:
a &= b;

一样
a = a & b;

& 是“按位和运算符”,搜索它。

【讨论】:

  • 更具体地说,它是“按位与赋值运算符”(according to MSDN,无论如何)。
  • 请注意,&=both bitwiselogical AND 运算符的复合赋值运算符,而不是只是“按位和运算符”。逻辑与情况的唯一特点是折叠的&= 不会短路(总是计算右手操作数),而未折叠的&& 运算符在左侧操作数计算为false 时会短路。
【解决方案2】:

这是一个速记运算符,可以让你折叠

a = a & b

进入

a &= b

除了对整数的按位运算外,&= 也可以用于布尔值,让您可以折叠

a = a && b

进入

a &= b

但是,在逻辑运算的情况下,展开形式是短路,而后一种折叠形式不短路。

例子:

b() 成为一个函数,它可以返回一个值并执行影响程序状态的操作

a 成为一个布尔值,即false

如果你这样做

a = a && b()

发生短路:由于afalse,因此无需评估b(并且跳过了b() 内部可能发生的额外计算)。

另一方面,如果你这样做了

a &= b()

不会发生短路:b 在任何情况下都会被评估,即使 afalse(评估 b() 不会改变逻辑结果),因此任何额外的计算可能发生在 b() 内部确实会被执行。

【讨论】:

    【解决方案3】:

    这个

    x &= y;
    

    等价于

    x = x & y;
    

    请注意,& 是按位与运算符。

    【讨论】:

      【解决方案4】:

      如果我没记错的话,它是双向操作...例如,它可以与 [Flags]Enum 一起使用。 它检查您的标志变量是否具有特定值。

      【讨论】:

        【解决方案5】:

        在 C#(以及我认为的大多数语言中)中,它是按位赋值运算符。

        a &= b 等价于 a = a & b

        http://msdn.microsoft.com/en-us/library/e669ax02.aspx

        【讨论】:

          【解决方案6】:

          a &= b 等价于a = a & b

          【讨论】:

            猜你喜欢
            • 2016-03-07
            • 2015-01-22
            • 2010-12-30
            • 1970-01-01
            • 2021-12-18
            • 2013-07-03
            • 2013-07-30
            • 2020-11-05
            相关资源
            最近更新 更多