Какой спецификатор формата для unsigned short int?

У меня есть следующая программа

#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 - 7.19. 6 Форматированные функции ввода/вывода и не смог понять правильный спецификатор формата при использовании модификаторов длины (таких как short, long и т.д.) с unsigned для int типа данных.

Является ли %u правильным спецификатором unsigned short int? Если да, то почему я получаю вышеупомянутое предупреждение?!

EDIT: Большую часть времени я пробовал %uh, и он все равно выдавал предупреждение.

118
задан Sangeeth Saravanaraj 2 January 2012 в 12:48
поделиться