打印unsigned char时出现printf错误

时间:2013-11-19 13:28:10

标签: c

我正在尝试打印unsigned char的值,但是我收到的代码的printf出错了。我想稍后将这两个值组合在一起,并将组合的字节输出为十进制。我在这做错了什么?提前谢谢!

unsigned char *buffer = malloc(512);
unsigned char first_byte = buffer[11];
unsigned char second_byte = buffer[12];
printf(%u, first_byte);

2 个答案:

答案 0 :(得分:4)

printf()的第一个参数是一个字符串。你在那里写了“裸”符号%u,这不是一个字符串。

您需要将其设为字符串文字:

printf("%u", (unsigned int) first_byte);

强制转换是为了确保传递正确的类型,以明确表示需要进行转换,因为%u期望类型unsigned int,但您想要使用unsigned char进行调用。< / p>

答案 1 :(得分:2)

使用%hhu作为无符号8位整数(unsigned char)的转换说明符。

#include <stdio.h>

int main(void)
{
  unsigned char c1 = '*'; /* The ASCII value for '*' is 42. */
  unsigned char c2 = 255;

  printf("%hhu %hhu\n", c1, c2);

  return 0;
}

这将打印:

42 255