有幾種方法。清潔解決方案是使用枚舉,這些都保證已經增加積分值:
typedef enum Difficulty {
Easy,
Normal,
Hard,
Lunatic
} Difficulty;
這可以像這樣使用:
void foo(Difficulty a, Difficulty b)
{
if (a > b) {
// ...
} else
// ...
}
// ...
Difficulty a = Easy;
Difficulty b = Hard;
foo(a, b);
其他方法也是可能的。你可以使用增加值的宏:
#define EASY 0
#define NORMAL 1
#define HARD 2
#define LUNATIC 3
你目前的方法也可以,但是你沒有理由使用實際字符作爲常量。你可以用數值來代替:
const char EASY = 0;
const char NORMAL = 1;
const char HARD = 2;
const char LUNATIC = 3;
當然,而且也沒有真正的原因,據我可以看到,會要求您使用char
常量。您可以改用int
。
第一種方法(使用枚舉器)通常是首選方法,因爲它爲您提供了可以使用的實際typedef,這有助於使代碼更具可讀性;如果您看到類型爲Difficulty
的變量,那麼您立即知道它預期會保持什麼樣的值。
需要記住的一點是,它們與整數兼容。這意味着它們並不真正給你任何類型的安全,因爲你可以給它們分配任何數值;它主要是爲了編寫更簡潔的代碼,而不是類型安全。
一個字:'enum' – Kevin
'enum {EASY,NORMAL,HARD,LUNATIC};' – 2013-07-19 15:22:12
當你有常量時,你通常會知道它們之間的關係。你爲什麼要檢查他們之間的平等? – Maroun