ফরম্যাট স্পেসিফায়ার (Format Specifiers)
C প্রোগ্রামিং ল্যাঙ্গুয়েজে, %d এবং %i হল ফরম্যাট স্পেসিফায়ার যেখানে %d ভেরিয়েবলের টাইপ নির্দেশ করে ডেসিমেল (decimal) হিসেবে এবং %i টাইপ নির্দেশ করে ইন্টিজার (integer) হিসেবে। ব্যবহার করার দৃষ্টিতে, printf() ফাংশনে সংখ্যা প্রিন্ট করার সময় %d বা %i ব্যবহার করলে আউটপুটে কোনো পার্থক্য নেই, কিন্তু scanf() এর ক্ষেত্রে পার্থক্য হয়। scanf() ফাংশন %i দিয়ে বেস (base) ডিটেক্ট করে কিন্তু %d দিয়ে বেস ১০ ধরে নেয়।
উদাহরণ (C প্রোগ্রাম)
#include <stdio.h>
int main() {
int num1, num2;
int num3, num4;
scanf("%i%d", &num1, &num2);
printf("%i\t%d\n", num1, num2);
num3 = 010; // অক্টাল (Octal) নম্বর
num4 = 010; // অক্টাল (Octal) নম্বর
printf("%i\t%d", num3, num4);
return 0;
}
আউটপুট
32767 -498932064 8 8
ব্যাখ্যা: এখানে 010 একটি অক্টাল (Octal) নম্বর। scanf() %d দিয়ে নম্বরটিকে ১০ (ডেসিমেল) হিসেবে পড়ে এবং %i দিয়ে ৮ (অক্টাল থেকে ডেসিমেল) হিসেবে পড়ে। printf() উভয় ক্ষেত্রেই অক্টাল নম্বরকে সঠিকভাবে পড়তে পারে।
মূল পার্থক্য: scanf()-এ %i অটোমেটিক্যালি অক্টাল (০ প্রিফিক্স), হেক্সাডেসিমেল (0x প্রিফিক্স) এবং ডেসিমেল ডিটেক্ট করে, কিন্তু %d সবসময় ডেসিমেল ধরে নেয়। printf()-এ উভয়ই একইভাবে কাজ করে।