c++ - uint8_t 不能用 cout 打印

标签 c++ cout unsigned-char uint8t

关于在 C++ 中使用整数,我遇到了一个奇怪的问题。

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

我的程序只有两行代码:

uint8_t aa = 5;

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

这个程序的输出是值是

即,它为 aa 打印空白。

当我将 uint8_t 更改为 uint16_t 时,上面的代码就像一个魅力。

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

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

最佳答案

它实际上并没有打印空白,但很可能是值为 5 的 ASCII 字符,它是不可打印的(或不可见的)。有很多 invisible ASCII character codes ,大部分都在32以下,实际上是空白。

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

uint8_t aa=5;

cout << "value is " << unsigned(aa) << endl;

关于c++ - uint8_t 不能用 cout 打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54355308/

相关文章:

c++ - opencv 使用给定坐标进行特征匹配

c++ - NEAT 突变何时发生?

c++ - 无法使用 ifstream 将 txt 文件的最后一部分写入 cout

c++ - 如何在 C++ 中将纬度的小数部分存储到 4 个无符号字符中

c++ - std::string 的默认构造函数是 no-throw 吗?

c++ - 如何在Qt中播放QByteArray中的声音

C++ 如何使用 std::cout 停止输出 5.0 等数字的小数和零

c++ - 为什么 cout 在与三元和 int 一起使用时打印 char 的 ascii 值?

c - 移位扩展 ASCII 码

c++ - 将 unsigned char[10] 转换为 QBytearray;