mam następujący programJaki jest specyfikator formatu dla 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;
}
Które gdy skompilowany przy użyciu gcc filename.c
wydał następujące ostrzeżenie (w linii scanf()
).
warning: format ‘%u’ expects argument of type ‘unsigned int *’, but argument 2 has type ‘short unsigned int *’ [-Wformat]
Następnie przekazał C99 specification - 7.19.6 Formatted input/output functions
i przy użyciu modyfikatorów długości (jak short
, long
ITP) z unsigned
do int
typ danych nie mógł zrozumieć prawidłowym formacie specyfikator.
Czy %u
jest prawidłowym specyfikatorem unsigned short int
? Jeśli tak, dlaczego otrzymuję powyższe ostrzeżenie ?!
EDYCJA: Przez większość czasu próbowałem %uh
i wciąż dawałem ostrzeżenie.
'printf ("% u \ n ", (unsigned int) długość); // "zawsze działa, ponieważ odczytany C99 gwarantuje, że' sizeof (short) <= sizeof (int) '(ale rzeczywiste odpowiedzi na to pytanie poniżej są oczywiście dużo lepsze) – Philip
Nie ma potrzeby obsady; domyślne promocje zajmują się tym. –