C-এ, ++ এবং -- অপারেটরগুলোকে ইনক্রিমেন্ট এবং ডিক্রিমেন্ট অপারেটর বলা হয়। এগুলো ইউনারি অপারেটর যেগুলো শুধু একটি অপেরেন্ড নেয়। অতএব ++ و -- অপারেটর অপেরেন্ডের আগে বা পরে একই প্রভাব ফেলে।
অর্থাৎ i++ এবং ++i উভয়ই সমতুল্য।
i=5; i++; printf("%d",i);
এবং
i=5; ++i; printf("%d",i);
দুইটো i=6 করবে।
তবে, যখন ইনক্রিমেন্ট এক্সপ্রেশন অ্যাসাইনমেন্ট অপারেটরের সাথে ব্যবহার করা হয়, তবে অপারেটর প্রেসিডেন্স বিবেচনায় আসে।
i=5; j=i++;
এই কেসে, =-এর প্রেসিডেন্স পোস্টফিক্স ++-এর চেয়ে বেশি। তাই i-এর মান j-এ অ্যাসাইন হয় i ইনক্রিমেন্ট হওয়ার আগে। এখানে j হয় 5 এবং i হয় 6।
i=5; j=++i;
এই কেসে, প্রিফিক্স ++-এর প্রেসিডেন্স = অপারেটরের চেয়ে বেশি। তাই i প্রথমে ইনক্রিমেন্ট হবে এবং ইনক্রিমেন্ট করা মান j-এ অ্যাসাইন হবে। এখানে i এবং j উভয়ই 6 হবে।
#include <stdio.h>
int main() {
int i=5,j;
j=i++;
printf ("\nafter postfix increment i=%d j=%d", i,j);
i=5;
j=++i;
printf ("\n after prefix increment i=%d j=%d",i,j);
return 0;
}
আউটপুট হলো
after postfix increment i=6 j=5 after prefix increment i=6 j=6