数组声明为无符号字符时的垃圾值
Garbage values when array declared as unsigned char
当一个数组被声明为无符号字符并用0x00-0xff范围内的值初始化并使用cout打印时,我得到如下所示的垃圾值
+ ( �
~ � � �
� O
� � <
我可以知道如何使用单字节来表示数字,并且能够使用cout吗?
因为它是一个unsigned char
,std::cout
将它们传递到终端,并将其显示为一个字符集(好吧,无论如何都在尝试-值超出了您正在使用的字符集的有效可打印字符范围)。
使用cout
输出时强制转换为unsigned int
。
默认情况下,字符类型显示为字符。如果你想将它们显示为整数,你必须首先转换它们:
unsigned char value = 42;
std::cout << static_cast<unsigned int>(value);
这些不是垃圾值。这些就是角色所代表的。要将其打印为int,只需在输出时强制转换为unsigned int
:
cout << (unsigned int) some_char;
相关文章:
- 按顺序声明的字符数组重叠
- 无法将字符串数组声明为类成员而不是字符 (C++)
- 无法在声明时使用初始值设定项列表初始化常量字符*/字符串数组的向量
- 字符类型声明和验证
- C++,字符串声明中的其他字符
- Cpp 什么是字符 a 的声明 [10][100]
- 带有字符的字符串的 cpp 声明
- 声明多字符字符的警告和错误
- C++ - "(常量字符*)"未在范围内声明?
- 使用无符号字符和字符串作为函数声明
- 如何在标头中声明后初始化 2D 字符数组
- 声明一个包含 N 个指向函数的指针的数组,该函数返回指向字符的指针
- 声明并分配给 2D 字符指针
- 在堆栈 C++ 上声明固定大小的字符数组
- 声明一个接受预处理器宏的字符
- 主 () 内外的字符指针声明
- 重做字符是未声明的,但它被声明了
- 如何在声明后设置常量字符*
- 数组声明为无符号字符时的垃圾值
- 将字符声明为" ' "