কম্পিউটার টিউটোরিয়াল

C ভাষায় %d এবং %i ফরম্যাট স্পেসিফায়ারের পার্থক্য

ফরম্যাট স্পেসিফায়ার (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()-এ উভয়ই একইভাবে কাজ করে।

  1. C এবং C#-এর পার্থক্য

  2. C#-এ == অপারেটর vs Equals() মেথড পার্থক্য

  3. Go এবং Java-এর পার্থক্য

  4. গো এবং পাইথন প্রোগ্রামিং ভাষার পার্থক্য