У меня есть следующая программа
#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? Если да, то почему я получаю вышеупомянутое предупреждение?!
EDIT:
Большую часть времени я пытался %uh, и он все еще выдавал предупреждение.