ইনক্রিমেন্ট অপারেটর ++ তার অপারেন্ডে ১ যোগ করে, এবং ডিক্রিমেন্ট অপারেটর -- তার অপারেন্ড থেকে ১ বিয়োগ করে। তাই,
x = x + 1; একই що x++;
এবং একইভাবে,
x = x - 1; একই що x--;
ইনক্রিমেন্ট এবং ডিক্রিমেন্ট অপারেটর দুটোই অপারেন্ডের আগে (প্রিফিক্স) বা পরে (পোস্টফিক্স) থাকতে পারে।
x = x + 1; লেখা যাবে ++x; হিসেবে
মনে রাখবেন, যখন একটি ইনক্রিমেন্ট বা ডিক্রিমেন্ট একটি এক্সপ্রেশনের অংশ হিসেবে ব্যবহার হয়, তখন প্রিফিক্স এবং পোস্টফিক্স ফর্মের মধ্যে একটি গুরুত্বপূর্ণ পার্থক্য রয়েছে। আপনি যদি প্রিফিক্স ফর্ম ব্যবহার করেন তবে ইনক্রিমেন্ট বা ডিক্রিমেন্ট এক্সপ্রেশনের বাকি অংশের আগে হবে, এবং আপনি যদি পোস্টফিক্স ফর্ম ব্যবহার করেন, তবে পুরো এক্সপ্রেশন ইভ্যালুয়েট হওয়ার পর ইনক্রিমেন্ট বা ডিক্রিমেন্ট হবে।
- প্রিফিক্স ভার্সনে (অর্থাৎ, ++i), i-এর মান ইনক্রিমেন্ট হয়, এবং এক্সপ্রেশনের মান হলো i-এর নতুন মান। অর্থাৎ এটি প্রথমে ইনক্রিমেন্ট করে তারপর এক্সপ্রেশনে মান এসাইন করে।
- পোস্টফিক্স ভার্সনে (অর্থাৎ, i++), i-এর মান ইনক্রিমেন্ট হয়, কিন্তু এক্সপ্রেশনের মান হলো i-এর মূল মান। অর্থাৎ এটি প্রথমে এক্সপ্রেশনে মান এসাইন করে তারপর ভেরিয়েবলটি ইনক্রিমেন্ট করে।
উদাহরণ
আসুন কিছু কোড দেখি আরও ভালো বুঝতে:
#include <iostream>
using namespace std;
int main() {
int x = 3, y, z;
y = x++;
z = ++x;
cout << x << ", " << y << ", " << z;
return 0;
}
আউটপুট
এটি নিচের আউটপুট দেবে:
5, 3, 5
এটি কেন? আসুন বিস্তারিত দেখি:
- x কে ৩ দিয়ে ইনিশিয়ালাইজ করুন
- y-কে x++ এক্সপ্রেশন ইভ্যালুয়েট করে পাওয়া মান দিয়ে এসাইন করুন, অর্থাৎ ইনক্রিমেন্টের আগের x-এর মান তারপর x ইনক্রিমেন্ট করুন।
- x ইনক্রিমেন্ট করুন তারপর z-কে ++x এক্সপ্রেশন ইভ্যালুয়েট করে পাওয়া মান দিয়ে এসাইন করুন, অর্থাৎ ইনক্রিমেন্টের পরের x-এর মান।
- এই মানগুলো প্রিন্ট করুন