cout 不打印无符号字符

新手上路,请多包涵

我正在处理以下代码:

 #include<iostream>
#include<stdio.h>

using namespace std;

main() {
    unsigned char a;
    a=1;
    printf("%d", a);
    cout<<a;
}

它正在打印 1 和一些垃圾。

为什么 cout 会这样?

原文由 Hitesh Menghani 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 741
1 个回答

C 编译器有自己的方式来定义打印输出的类型,因为您可以指定输出的类型。

前任:

 uint8_t c = 100;
printf("%d",c);

so you can also print c as an int by %d , or char %c , string %s or a hex value %x .

C++ 也有自己的方式,默认情况下, cout 将 8 位值打印为 char 。因此,您必须在输出参数中使用说明符。

您可以使用:

  1. a + 在输出参数的名称之前
   uint8_t data_byte = 100;
   cout << "val: " << +data_byte << endl;

  1. 使用函数 unsigned(var) ;喜欢,
     uint8_t data_byte = 100;
    cout << "val: " << unsigned(data_byte) << endl;

原文由 R1S8K 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题