2017-08-01 50 views
2

我試圖使用(char) enum來存儲我的等級,然後使用cout輸出它們,但它沒有正確輸出。從枚舉輸出錯誤值

#include <iostream> 

using namespace std;  

enum rank : char { 
    first = '1', second = '2', third = '3' 
}; 

int main() 
{ 
    // other code ... 
    cout << rank::third; 
    // other code ... 
} 

它輸出51 !!!看這裏 - (?)http://ideone.com/8vHzQ5

這看起來像ASCII值,所以我應該種姓他們回char或一些其他類型的(我爲什麼需要這麼做時,我已經寫char針對枚舉),否則什麼這裏錯了嗎?

+1

是的,將其重新轉換爲char。基本上,enum的值是int。 'int n ='1'; std :: cout << n;' –

+1

您也可以爲參考頁面底部的例子中看到的'std :: ostream&operator <<'創建一個重載:http://en.cppreference.com/w/CPP /語言/枚舉 – UnholySheep

回答

2

在這種情況下,默認枚​​舉值被視爲int513的十進制ASCII值;如果你想打印3,你需要明確地轉換它。

std::cout << static_cast<char>(rank::third);