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/46823791/

相关文章:

比较 C 中的 SHA 校验和值

c++ - 从字符串转换为 unsigned char* 会留下垃圾

c++ - 将 Node.js C++ 附加组件与静态库链接

c++ - 试图读取文本文件(包含整数和字符)的内容并将其存储为不同的变量?

c++ - 使用 makefile 生成版本信息

c++ - 如何在 C++ 中检查 std::cout 是否重定向到文件?

c++ - 调试断言失败文件、tokenScanner 和文本文件

c++ - 如何在Visual C++项目中定义和加载资源?

c++ - 使用多阶段编译和无限循环打印到终端

c++ - std::cout 输出直到程序结束才打印