我有以下程序
#include <stdio.h>
int main(void)
{
unsigned short int length = 10;
printf("Enter length : ");
scanf("%u", &length);
printf("value is %u \n", length);
return 0;
}
使用哪个进行编译时gcc filename.c
发出以下警告(scanf()
在行中)。
warning: format ‘%u’ expects argument of type ‘unsigned int *’, but argument 2 has type ‘short unsigned int *’ [-Wformat]
然后我提到的C99 specification - 7.19.6 Formatted input/output functions
,并使用长度调节剂(如当不明白正确的格式指定符short
,long
等)与unsigned
用于int
数据类型。
是%u
正确的说明符unsigned short int
?如果是这样,为什么我会收到上述警告?
编辑:大多数时候,我都在尝试%uh
,但仍在发出警告。
不需要演员;默认促销会照顾好它。
—
R .. GitHub停止帮助ICE
printf("%u\n", (unsigned int)length); //
始终有效,因为您阅读的C99规范可以保证sizeof(short) <= sizeof(int)
(但是,对于以下问题的实际答案当然更好)