0

我正在学习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_2is4E_MY_TAG_VAL_3is的值2以及枚举函数中的参数为什么是<<=1,我记得没有这样的运算符

4

1 回答 1

1

此枚举器包含位标志值。第一个枚举值被隐式初始化为 0,第二个枚举值被显式初始化为 1,其余的通过将<<=1(本质上相当于乘以 2)应用于前一个值来初始化,并将为 2、4、8。gMyTagVar使用bitwise OR运算符组成。您可能想熟悉按位运算

于 2017-05-21T07:53:04.663 回答