J'ai déjà vu d'autres utiliser Bitwise-OR pour combiner des indicateurs avant:
#define RUN 0x01
#define JUMP 0x02
#define SHOOT 0x04
const byte madPerson = RUN | JUMP | SHOOT;
C'est aussi ainsi que je le fais.
Mais j'ai également vu certains (moins nombreux) combiner des indicateurs en utilisant l'addition:
#define RUN 0x01
#define JUMP 0x02
#define SHOOT 0x04
const byte madPerson = RUN + JUMP + SHOOT;
Lequel est le plus "lisible"? (Laquelle pensez-vous que plus de gens reconnaîtront?) Quelle est la façon "standard" de le faire? lequel préfères-tu?
1<<0
,1<<1
,1<<2
et ainsi de suite. Lorsque vous avez de nombreux indicateurs, il devient plus lisible, plus facile à entretenir, moins sujet aux erreurs. Par exemple, si vous emballez tous les 64 bits d'un entier 64 bits, vous voulez vraiment éviter les fautes de frappe :) La façon dont vous représentez1
est également importante. Pour un entier 64 bits dans VS2010, je pense que c'est le cas1UI64
, ou quelque chose comme ça. Utiliser un mauvais type pourrait vous mordre.