我正在尝试使用scanf()
读取一个无符号字符值,格式为%hhu
,但编译器返回了以下信息:
error: unknown conversion type character 'h' in format
[-Werror=format]| // line 3 error: too many arguments for format
[-Werror=format-extra-args]| // line 3
使用以下代码:
printf("Enter a number: ");
unsigned char nb;
scanf("%hhu", &nb); // line 3
printf("Number: %u\n", nb);
return (nb);
#define __USE_MINGW_ANSI_STDIO 1
,或者将-D__USE_MINGW_ANSI_STDIO=1
添加到您的预处理器(或编译器)标志中。根据您提供的诊断输出,您似乎正在使用MinGW编译器。另请参阅此相关主题。 - user539810int
或unsigned
。这样会更快,因为编译器不需要从int
转换为char
等进行类型转换。如果你需要将读取限制为一个字节,请使用%c
来表示字符。长度修饰符h
很好用,但并不是所有编译器都实现了它。我以前就曾受到过这种问题的困扰。 - David C. Rankin