2012-02-18 58 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);