Başkalarının daha önce bayrakları birleştirmek için Bitwise-OR kullandığını gördüm:
#define RUN 0x01
#define JUMP 0x02
#define SHOOT 0x04
const byte madPerson = RUN | JUMP | SHOOT;
Ben de öyle yapıyorum.
Ancak bazı (çok değil) ek kullanarak bayrakları birleştirdim gördüm:
#define RUN 0x01
#define JUMP 0x02
#define SHOOT 0x04
const byte madPerson = RUN + JUMP + SHOOT;
Hangisi daha "okunabilir"? (Hangisinin daha çok insanın tanıyacağını düşünüyorsunuz?) Bunu yapmanın "standart" yolu nedir? Hangisini tercih ediyorsun?
1<<0
,1<<1
,1<<2
, vb. Çok sayıda bayrağa sahip olduğunuzda, daha okunabilir, daha sürdürülebilir, daha az hataya açık hale gelir. Örneğin, 64 bitlik bir intin 64 bitini paketliyorsanız, yazım hatalarından kaçınmak istersiniz :) Nasıl temsil ettiğiniz1
de önemlidir. VS2010'da 64 bitlik bir tam sayı için olduğunu düşünüyorum1UI64
, ya da böyle bir şey. Yanlış tip kullanmak sizi ısıtabilir.