2017-05-15 1 views
0

Je suis en train d'apprendre à propos du langage Pawn. Je vais avoir du mal avec les paramètres de la fonction enumPawn Language: Paramètres de la fonction 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; 

J'ai appris que les valeurs du enum seront incrémenter par défaut par +=1 Et ma leçon dit le code:

new E_MY_TAG:gMyTagVar = E_MY_TAG_VAL_2 | E_MY_TAG_VAL_3; 

qui créer une nouvelle variable et lui attribuer la valeur 6 (4 | 2)

Je ne comprends pas pourquoi la valeur de E_MY_TAG_VAL_2 est 4 et E_MY_TAG_VAL_3 est 2 et le paramètre dans la fonction ENUM pourquoi il est <<=1, je me souviens qu'il n'y a pas tel opérateur

Répondre

1

Ce recenseur contient des valeurs de drapeau de bits. La première valeur enum est initialisée implicitement avec 0, la seconde est explicitement initialisée avec 1, et les autres sont initialisées en appliquant <<=1 (opérateur de décalage bit gauche qui équivaut essentiellement à multiplier par 2) à la valeur précédente et sera 2, 4, 8 gMyTagVar est composé à l'aide de l'opérateur bitwise OR. Vous pouvez vous familiariser avec bitwise operations.

+0

Précisément. Le Guide du langage des pions indique que "(* increment *)" est "(* operator * * constant *)" où * operator * est seulement '+ =', '* =' ou '<< ='. – IllidanS4