我正在学习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)
此枚举器包含位标志值。第一个枚举值用0隐式初始化,第二个用1显式初始化,其余的是通过将<<=1
(左移位运算符,基本上相当于乘以2)应用于前一个值来初始化,并且将为2 ,4,8 gMyTagVar
由bitwise OR
运算符组成。您可能希望熟悉bitwise operations。