小编典典

uint8_t 不能用 cout 打印

all

我有一个关于在 C++ 中使用整数的奇怪问题。

我编写了一个简单的程序,它为变量设置一个值,然后打印它,但它没有按预期工作。

我的程序只有两行代码:

uint8_t aa = 5;

cout << "value is " << aa << endl;

这个程序的输出是value is

即,它为aa.

当我更改uint8_tuint16_t上面的代码时,它就像一个魅力。

我用的是Ubuntu 12.04(Precise Pangolin),64位,我的编译器版本是:

gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)

阅读 75

收藏
2022-07-14

共1个答案

小编典典

它并没有真正打印空白,但很可能是值为 5 的 ASCII 字符,它是不可打印的(或不可见的)。有许多不可见的 ASCII
字符代码
,其中大多数低于值 32,实际上是空白。

您必须转换aaunsigned int输出数值,因为ostream& operator<<(ostream&, unsigned char)尝试输出可见字符值。

uint8_t aa=5;

cout << "value is " << unsigned(aa) << endl;
2022-07-14