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

Garbage values when array declared as unsigned char

本文关键字:字符 声明 无符号 数组      更新时间:2023-10-16

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

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

我可以知道如何使用单字节来表示数字,并且能够使用cout吗?

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

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

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

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

这些不是垃圾值。这些就是角色所代表的。要将其打印为int,只需在输出时强制转换为unsigned int

cout << (unsigned int) some_char;