He visto a otros usar Bitwise-OR para combinar banderas antes:
#define RUN 0x01
#define JUMP 0x02
#define SHOOT 0x04
const byte madPerson = RUN | JUMP | SHOOT;
Esa es también la forma en que lo hago.
Pero también he visto algunos (no tantos) combinan banderas usando la suma:
#define RUN 0x01
#define JUMP 0x02
#define SHOOT 0x04
const byte madPerson = RUN + JUMP + SHOOT;
¿Cuál es más "legible"? (¿Cuál crees que reconocerán más personas?) ¿Cuál es la forma "estándar" de hacerlo? ¿Cuál prefieres?
1<<0
,1<<1
,1<<2
, y así sucesivamente. Cuando tiene muchas banderas, se vuelve más legible, más fácil de mantener y menos propenso a errores. Por ejemplo, si está empacando todos los 64 bits de un int 64 bits, realmente desea evitar errores tipográficos :) La forma en que representa1
también es importante. Para un entero de 64 bits en VS2010, creo que es1UI64
, o algo así. Usar un tipo incorrecto puede morderte.