मेरा निम्नलिखित कार्यक्रम है
#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
? यदि ऐसा है तो मुझे उपरोक्त चेतावनी क्यों मिल रही है ?!
संपादित करें: ज्यादातर समय, मैं कोशिश कर रहा था %uh
और यह अभी भी चेतावनी दे रहा था ।
printf("%u\n", (unsigned int)length); //
हमेशा काम करता है, क्योंकि आप जो C99 युक्ति पढ़ते हैं वह गारंटी देता हैsizeof(short) <= sizeof(int)
(लेकिन नीचे इस प्रश्न के वास्तविक उत्तर निश्चित रूप से बहुत अच्छे हैं)