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 оператор. Вы можете ознакомиться с побитовыми операциями.

Другие вопросы по тегам