Aşağıdaki programım var
#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;
}
Kullanılarak derlendiğinde gcc filename.c
aşağıdaki uyarı ( scanf()
satırda) verdi.
warning: format ‘%u’ expects argument of type ‘unsigned int *’, but argument 2 has type ‘short unsigned int *’ [-Wformat]
Sonra sevk C99 specification - 7.19.6 Formatted input/output functions
ve uzunluk düzenleyiciler (gibi kullanırken doğru biçimde belirtici anlayamadık short
, long
ile, vs) unsigned
için int
veri türü.
Mı %u
doğru belirteci unsigned short int
? Öyleyse neden yukarıda belirtilen uyarıyı alıyorum ?!
DÜZENLEME: Çoğu zaman deniyordum %uh
ve hala uyarı veriyordu.
printf("%u\n", (unsigned int)length); //
her zaman işe yarar, çünkü okuduğunuz C99 spesifikasyonu bunu garanti edersizeof(short) <= sizeof(int)
(ancak aşağıdaki soruya verilen gerçek cevaplar elbette çok daha güzeldir)