Может кто-нибудь объяснить, что такое оператор &=
?Что это за оператор: & =
Я искал, но только что получил результаты с &
или =
.
Может кто-нибудь объяснить, что такое оператор &=
?Что это за оператор: & =
Я искал, но только что получил результаты с &
или =
.
a &= b;
То же самое,
a = a & b;
& является "побитовое и оператор", поиск для этого.
Более конкретно, это «побитовый оператор AND AND», ([согласно MSDN] (http://msdn.microsoft.com/en-us/library/windows/apps/a9h8y72a (v = vs.94) .aspx), в любом случае). –
Обратите внимание, что '& =' - это оператор составного присваивания для ** как ** ** побитового **, так и ** логического ** И оператора, а не только «побитовый и оператор». Единственная особенность в логическом случае И состоит в том, что свернутый '& =' не является короткозамкнутым (правый операнд всегда оценивается всегда), в то время как незаваленный '&&' оператор выполняет короткое замыкание, если левый операнд оценивается как 'false' , –
Это сокращенная оператор, который позволяет свернуть
a = a & b
в
a &= b
Помимо поразрядными операций над целыми числами, &=
могут быть использованы на булевых значений, а также, что позволяет свернуть
a = a && b
a &= b
Однако в случае логической операции расширенная форма является короткозамкнутой, в то время как последняя свернутая форма не является короткозамкнутой.
Пример:
пусть b()
функция, которая возвращает значение, а также делает материал, который влияет на состояние программы
позволить a
быть логическая переменная, которая false
если вы
a = a && b()
короткое замыкание бывает: с a
is false
нет необходимости оценивать b
(и дополнительные вычисления, которые могут произойти внутри b()
, пропущены).
С другой стороны, если вы
a &= b()
короткого замыкания не происходит: b
оценивается в любом случае, даже если a
является false
(и оценки b()
не изменит логическое результат), поэтому любые дополнительные вычисления, которые могут произойти внутри b()
, выполняются.
Если я правильно помню его билинейную операцию ... например, он может использоваться с [Flags] Enum. Он проверяет, имеет ли переменная вашего флага определенное значение.
Этот
x &= y;
эквивалентно
x = x & y;
Обратите внимание, что &
является побитовое и оператора.
В C# (и на большинстве языков, я думаю) его побитовый оператор-ассистент.
& = Ь эквивалентно а = & б
a &= b
эквивалентно a = a & b
это регулярный оператор? http://www.w3schools.com/js/js_operators.asp – Abadon
В общем случае # = b эквивалентно a = a # b для любого двоичного оператора #. – DenverCoder8
(Обратите внимание, что принятый ответ является неполным. См. Http://stackoverflow.com/a/8910652/1018783 для более подробного объяснения относительно оператора '& ='). –