Ho visto altri usare Bitwise-OR per combinare flag prima:
#define RUN 0x01
#define JUMP 0x02
#define SHOOT 0x04
const byte madPerson = RUN | JUMP | SHOOT;
Questo è anche il modo in cui lo faccio.
Ma ho anche visto alcuni (non così tanti) combinare flag usando l'aggiunta:
#define RUN 0x01
#define JUMP 0x02
#define SHOOT 0x04
const byte madPerson = RUN + JUMP + SHOOT;
Quale è più "leggibile"? (Quale pensi che riconosceranno più persone?) Qual è il modo "standard" per farlo? Quale preferisci?
1<<0
,1<<1
,1<<2
, e così via. Quando hai molte bandiere, diventa più leggibile, più gestibile, meno soggetto a errori. Ad esempio, se stai impacchettando tutti i 64 bit di un int a 64 bit, vuoi davvero evitare errori di battitura :) Anche il modo in cui rappresenti1
è importante. Per un numero intero a 64 bit in VS2010 penso che sia1UI64
, o qualcosa del genere. L'uso di un tipo sbagliato potrebbe morderti.