Ho il seguente programma diQual è l'identificatore di formato per 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;
}
Quali quando compilati utilizzando gcc filename.c
ha emesso il seguente avviso (in linea scanf()
).
warning: format ‘%u’ expects argument of type ‘unsigned int *’, but argument 2 has type ‘short unsigned int *’ [-Wformat]
Poi cui il C99 specification - 7.19.6 Formatted input/output functions
e non poteva capire l'identificatore di formato corretto quando si utilizzano i modificatori di lunghezza (come short
, long
, ecc) con unsigned
per int
tipo di dati.
È %u
l'identificatore corretto unsigned short int
? In tal caso, perché ricevo l'avviso sopra menzionato ?!
MODIFICA: La maggior parte del tempo, stavo provando %uh
e stava ancora dando l'avvertimento.
'printf ("% u \ n ", lunghezza (unsigned int)); // 'funziona sempre, poiché la specifica C99 che leggi garantisce che' sizeof (short) <= sizeof (int) '(ma le risposte effettive a questa domanda sotto sono ovviamente molto più belle) – Philip
Non c'è bisogno del cast; le promozioni predefinite si prendono cura di esso. –