আমি নিম্নলিখিত প্রোগ্রাম আছে
#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)(তবে নীচে এই প্রশ্নের প্রকৃত উত্তর অবশ্যই খুব সুন্দর)