What is this operator: &=

前端 未结 6 864
暖寄归人
暖寄归人 2021-01-21 16:16

Can someone explain what is the operator &= for?

I searched, but I got only results with & or =.

相关标签:
6条回答
  • 2021-01-21 16:34
    a &= b;
    

    Is the same as

    a = a & b;
    

    & is the "bitwise and operator", search for that.

    0 讨论(0)
  • 2021-01-21 16:36

    In C#(and in most languages I think) its the bitwise assigment operator.

    a &= b is equivalent of a = a & b

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

    0 讨论(0)
  • 2021-01-21 16:38

    If i remember correctly it biwise operation...for example it can be used with [Flags]Enum. It check if your flag variable has specific value.

    0 讨论(0)
  • 2021-01-21 16:50

    It's a shorthand operator which allows you to collapse

    a = a & b
    

    into

    a &= b
    

    Apart from bitwise operations on integers, &= can be used on boolean values as well, allowing you to collapse

    a = a && b
    

    into

    a &= b
    

    However, in the case of logical operation, the expanded form is short-circuiting, while the latter collapsed form does not short-circuit.

    Example:

    let b() be a function that returns a value and also does stuff that affects the program's state

    let a be a boolean that is false

    if you do

    a = a && b()
    

    the short-circuit happens: since a is false there's no need to evaluate b (and the extra computation that might happen inside b() is skipped).

    On the other hand, if you do

    a &= b()
    

    the short-circuit doesn't happen: b is evaluated in any case, even when a is false (and evaluating b() wouldn't change the logical outcome), thus any extra computation that might happen inside b() does get executed.

    0 讨论(0)
  • 2021-01-21 16:52

    a &= b is equivalent to a = a & b

    0 讨论(0)
  • 2021-01-21 16:53

    This

    x &= y;
    

    is equivalent to

    x = x & y;
    

    Note that & is the bitwise and operator.

    0 讨论(0)
提交回复
热议问题