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