Pawn Language: параметры в функции enum
Я учусь о Pawn
язык. У меня проблемы с параметрами в enum
функция
enum E_MY_TAG (<<= 1)
{
E_MY_TAG_NONE,
E_MY_TAG_VAL_1 = 1,
E_MY_TAG_VAL_2,
E_MY_TAG_VAL_3,
E_MY_TAG_VAL_4
}
new
E_MY_TAG:gMyTagVar = E_MY_TAG_VAL_2 | E_MY_TAG_VAL_3;
Я узнал, что значения в enum
будет увеличиваться по умолчанию на +=1
И мой урок говорит код:
new E_MY_TAG:gMyTagVar = E_MY_TAG_VAL_2 | E_MY_TAG_VAL_3;
Это создаст новую переменную и присвоит ей значение 6 (4 | 2)
Я не понимаю, почему ценность E_MY_TAG_VAL_2
является 4
а также E_MY_TAG_VAL_3
является 2
и параметр в функции перечисления, почему это <<=1
я помню такого оператора нет
1 ответ
Этот перечислитель содержит значения битовых флагов. Первое значение перечисления неявно инициализируется с 0, второе явно инициализируется с 1, а остальные инициализируются путем применения <<=1
(оператор сдвига влево, который по существу эквивалентен умножению на 2) к предыдущему значению и будет равен 2, 4, 8. gMyTagVar
составлен с использованием bitwise OR
оператор. Вы можете ознакомиться с побитовыми операциями.