Parameters in the enum function
#1

I'm learning about Pawn language . I'm having trouble with parameters in the enum function

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;

I learned that the values in the enum will increment by default by +=1 and my lesson says the code :

new E_MY_TAG:gMyTagVar = E_MY_TAG_VAL_2 | E_MY_TAG_VAL_3;
That will create a new variable and assign it the value 6 (4 | 2)

I don't understand it , why the value of E_MY_TAG_VAL_2 is 4 and E_MY_TAG_VAL_3 is 2 and the parameter in the enum function why it is <<=1 , i remember there is no such operator . Thank you ^^
Reply
#2

The operator "<<" it's a bitwise shift operator, the code you posted is used to make "Bit Flags"
PHP код:
enum E_MY_TAG (<<= 1)
{
E_MY_TAG_NONE,         //0b00000000000000000000000000000000 = 0
E_MY_TAG_VAL_1 1,  //0b00000000000000000000000000000001 = 1
E_MY_TAG_VAL_2,        //0b00000000000000000000000000000010 = 2
E_MY_TAG_VAL_3,        //0b00000000000000000000000000000100 = 4
E_MY_TAG_VAL_4         //0b00000000000000000000000000001000 = 8

If you want to learn more about bit flags check this topic: https://sampforum.blast.hk/showthread.php?tid=216730
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)