Réponse acceptée !
salut,
l'idée quand tu fais un truc du genre, c'est que les flags a
positionner ne possedent en binaire qu'un seul 1 : cela revient a
choisir des entiers qui sont des puissances de 2 (1,2,4,8,16,32, ...en
binaire 32 s'ecrit 100000, etc.)
exemple:
#define FLAG0 1
#define FLAG1 2
#define FLAG2 4
#define FLAG3 8
#define FLAG4 16
DWORD res = (FLAG1 | FLAG3);
if (res & FLAG0)
printf("flag0 positionne\n");
if (res & FLAG1)
printf("flag1 positionne\n");
if (res & FLAG2)
printf("flag2 positionne\n");
if (res & FLAG3)
printf("flag3 positionne\n");
if (res & FLAG4)
printf("flag4 positionne\n");
si tu fais (res & 5) tu obtiendras "flag0 positionne" mais ca n'est
pas "forcement" pertinent car 5 n'est pas une puissance de 2.
Avec un entier tu peux positionner jusqu'a 32 flags (un entier est codé sur 32 bits ...)
Tu pouvais aussi faire ca:
#define FLAG0 (1 << 0)
#define FLAG1 (1 << 1)
#define FLAG2 (1 << 2)
#define FLAG3 (1 << 3)
#define FLAG4 (1 << 4)
voila; bonne méditation