C++ 数组声明为无符号字符时的垃圾值

C++ 数组声明为无符号字符时的垃圾值,c++,type-conversion,unsigned,unsigned-char,C++,Type Conversion,Unsigned,Unsigned Char,当一个数组被声明为unsigned char并用0x00-0xff范围内的值初始化并使用cout打印时,我得到如下垃圾值 + ( � ~ � � � � O � � < +(� ~ � � � � O � � < 我可以知道如何对数字使用单字节,但又能使用cout吗?这些不是垃圾值。这些是字符所表示的。要将其打印为int,只需

当一个数组被声明为unsigned char并用0x00-0xff范围内的值初始化并使用cout打印时,我得到如下垃圾值

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

我可以知道如何对数字使用单字节,但又能使用cout吗?

这些不是垃圾值。这些是字符所表示的。要将其打印为int,只需在输出时转换为
无符号int

cout << (unsigned int) some_char;

cout这些不是垃圾值。这些是字符表示的值。要将其打印为int,只需在输出时转换为
无符号int

cout << (unsigned int) some_char;

cout因为它是一个
unsigned char
std::cout
将它们传递给终端,并将其显示为字符集(无论如何,正在尝试-值超出了所使用字符集的有效可打印字符范围)


使用
cout
输出时强制转换为
unsigned int
std::cout
,因为它是一个
无符号字符,所以将它们传递到终端,并显示为字符集(嗯,无论如何,正在尝试-这些值超出了您正在使用的字符集的有效可打印字符范围)


使用
cout
输出时强制转换为
unsigned int

字符类型默认显示为字符。如果要将其显示为整数,则必须首先转换:

unsigned char value = 42;
std::cout << static_cast<unsigned int>(value);
无符号字符值=42;

默认情况下,字符类型显示为字符。如果希望它们显示为整数,则必须首先转换它们:

unsigned char value = 42;
std::cout << static_cast<unsigned int>(value);
无符号字符值=42;

我们可以同时看到初始化代码和打印代码吗?您正在尝试打印不可打印的字符。我们可以同时看到初始化代码和打印代码吗?您正在尝试打印不可打印的字符。