ฉันเคยเห็นคนอื่นใช้ Bitwise-OR เพื่อรวมแฟล็กก่อนหน้านี้:
#define RUN 0x01
#define JUMP 0x02
#define SHOOT 0x04
const byte madPerson = RUN | JUMP | SHOOT;
นั่นเป็นวิธีที่ฉันทำ
แต่ฉันยังเห็นบางอย่าง (ไม่มาก) รวมธงโดยใช้การเพิ่ม:
#define RUN 0x01
#define JUMP 0x02
#define SHOOT 0x04
const byte madPerson = RUN + JUMP + SHOOT;
อันไหน "อ่าน" มากกว่า? (อันไหนที่คุณคิดว่าคนอื่นจะจำได้?) วิธี "มาตรฐาน" ในการทำคืออะไร? คุณชอบอันไหน
1<<0
,1<<1
,1<<2
และอื่น ๆ เมื่อคุณมีแฟล็กจำนวนมากมันจะสามารถอ่านได้ง่ายขึ้นดูแลได้มากขึ้นและมีข้อผิดพลาดน้อยลง ตัวอย่างเช่นถ้าคุณบรรจุ 64 บิตของ int 64 บิตคุณต้องการหลีกเลี่ยงการพิมพ์ผิด :) วิธีที่คุณเป็นตัวแทน1
ก็สำคัญเช่นกัน สำหรับจำนวนเต็ม 64 บิตใน VS2010 ฉันคิดว่ามันเป็น1UI64
หรืออะไรแบบนั้น การใช้ประเภทผิดอาจกัดคุณ