2012-02-18 60 views
0

當數組被聲明爲無符號字符,並用範圍爲0x00-0xff值進行初始化並且使用COUT印刷,我得到垃圾值如下:垃圾值時,聲明爲無符號字符陣列

+ ( �   
~ � � � 
    �  O 
    � � < 

我可以知道如何使用單字節的數字,但能夠使用cout?

+0

我們可以看到這兩個初始化代碼和打印的代碼? – Lefteris 2012-02-18 06:29:32

+0

您正在嘗試打印不可打印的字符。 – 2012-02-18 06:33:45

回答

3

因爲它是一個unsigned charstd::cout是將它們傳遞給終端和它被顯示爲一個字符集(好吧,試圖,反正 - 的值在您使用的字符集的有效可打印字符範圍之外)。

當用cout輸出時轉換爲unsigned int

1

那些不是垃圾值。這些就是角色所代表的。要打印它作爲一個int,只是轉換爲unsigned int在輸出時間:

cout << (unsigned int) some_char; 
2

默認情況下,字符類型顯示爲字符。如果你希望他們顯示爲整數,則必須將它們先轉換:

unsigned char value = 42; 
std::cout << static_cast<unsigned int>(value);