我试图打印一个无符号字符的值,但下面代码的printf出现错误。我想稍后将这两个值组合在一起,并将组合后的字节输出为十进制。我在这里做错了什么?提前感谢!
unsigned char *buffer = malloc(512);
unsigned char first_byte = buffer[11];
unsigned char second_byte = buffer[12];
printf(%u, first_byte);
printf()
的第一个参数是字符串。你已经在那里写了"裸"符号%u
,它不是字符串。
你需要使它成为一个字符串文字:
printf("%u", (unsigned int) first_byte);
强制转换是为了确保传递正确的类型,以明确需要转换,因为%u
需要类型unsigned int
,但您希望使用unsigned char
进行调用。
使用%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 %hhun", c1, c2);
return 0;
}
这将打印:
42 255