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