在這種情況下,如果你想擁有3位,以節省您的星州,如代替有三個布爾標誌,不是你應該做的:
typedef enum
{
DifficultyEasy = 1 << 0,
DifficultyModerate = 1 << 1,
DifficultyChallenging = 1 << 2
} Difficulty;
Difficulty state = 0; // default
要設置簡單:
state |= DifficultyEasy;
要增加挑戰:
state |= DifficultyChallenging;
要重置很簡單:
state &= ~DifficultyEasy;
要知道是具有挑戰性的集:
BOOL isChallenging = DifficultyChallenging & state;
在這種情況下有人需要它是如何工作的解釋:
1 << x means set x bit to 1 (from right);
// actually it means move 0b00000001 left by x, but I said 'set' to simplify it
1 << 5 = 0b00100000; 1 << 2 = 0b00000100; 1 << 0 = 0b00000001;
0b00001111 | 0b11000011 = 0b11001111 (0 | 0 = 0, 1 | 0 = 1, 1 | 1 = 1)
0b00001111 & 0b11000011 = 0b00000011 (0 & 0 = 0, 1 & 0 = 0, 1 & 1 = 1)
~0b00001111 = 0b11110000 (~0 = 1, ~1 = 0)
枚舉不如果更容易,必須從0開始 – tiguero
第二顆恆星不能在第一顆恆星關閉時打開,因此您可以使用難度變量。 –
@timjver你的意思是我不需要實際使用按位操作? – tiguero