Это действительно так - но я думаю, что вы путаете логическое значение и оператор с побитовым и оператором. Здесь они выполняют побитовую операцию на modifierFlags
. Подробнее здесь .
По сути, он выполняет вычисления для каждой отдельной двоичной цифры. В случае &
это приводит к 1
, если обе цифры равны 1
, и 0
в противном случае. Пример:
0101 (decimal 5)
AND 0011 (decimal 3)
= 0001 (decimal 1)
modifierFlags
устанавливает каждое двоичное место на основе некоторого флага модификатора, тогда каждая маска содержит один в своем соответствующем месте. Таким образом, выполнение этой операции приводит к 0, если этот флаг не установлен, и к некоторому ненулевому значению, если этот флаг установлен . Вот почему это если утверждение работает.