使用ASCII而不是信我有一個枚舉:C++的枚舉
enum Items {
PAC = 'C', GHOST = '@', FRUIT = 'o', POINTS = '.', WALL = 'w', EMPTY = ' ', UNDEFINED = '+'
} fieldItems;
,我想下進行更改與ASCII表的178。我知道我如何分配它:char w = 178; 但是,我怎麼說這是一個字符的枚舉w?
使用ASCII而不是信我有一個枚舉:C++的枚舉
enum Items {
PAC = 'C', GHOST = '@', FRUIT = 'o', POINTS = '.', WALL = 'w', EMPTY = ' ', UNDEFINED = '+'
} fieldItems;
,我想下進行更改與ASCII表的178。我知道我如何分配它:char w = 178; 但是,我怎麼說這是一個字符的枚舉w?
爲什麼不乾脆:
WALL = 178
如果你想控制的基礎類型的enum
,你應該使用
enum Items : char { ... };
反正。請注意,只有枚舉類型Items
具有單個基礎類型,而不是每個值。你不能告訴編譯器WALL
是一個特定的類型。
這給了我一個奇怪的錯誤:警告:範圍枚舉僅適用於-std = C++ 11或-std = gnu ++ 11 [默認情況下啓用] – AnnoyedGuy
@AnnoyedGuy這並不奇怪,這是真的:你需要C + +11以上述方式來控制枚舉的類型。如果你不能使用C++ 11,只需使用'WALL = 178',因爲如果你使用其他方式,比如''\ xB2''或'char(178)',它就不會有什麼實質性的變化 - 結果將是一樣的。 –
沒有一個小數轉義字符文字,但有一個十六進制轉義:
WALL='\xB2'
這不是ascii。來自代碼頁437的硬編碼字符代碼並不完全移植該井。 –