অ্যাসাইনমেন্ট অপারেটরগুলো বাম অপারেন্ড দ্বারা নির্দিষ্ট অবজেক্টে একটি মান স্টোর করে। দুধরকম অ্যাসাইনমেন্ট অপারেশন রয়েছে: সিম্পল অ্যাসাইনমেন্ট, যেখানে দ্বিতীয় অপারেন্ডের মান প্রথম অপারেন্ড দ্বারা নির্দিষ্ট অবজেক্টে স্টোর হয়, এবং কম্পাউন্ড অ্যাসাইনমেন্ট, যেখানে আর্থমেটিক, শিফট, বা বিটওয়াইজ অপারেশন পারফর্ম করা হয় ফলাফল স্টোর করার আগে।
উদাহরণ
সিম্পল অ্যাসাইনমেন্ট অপারেটর উদাহরণ:
#include <iostream>
using namespace std;
int main() {
int i;
i = 10; // সিম্পল অ্যাসাইনমেন্ট
cout << i;
return 0;
}
আউটপুট
এটি নিচের আউটপুট দেবে:
10
কম্পাউন্ড অ্যাসাইনমেন্ট অপারেটরগুলো e1 op= e2 ফর্মে নির্দিষ্ট করা হয়, যেখানে e1 একটি মডিফাইয়েবল l-value যা const টাইপের নয় এবং e2 নিচের যেকোনো একটি:
- একটি আর্থমেটিক টাইপ
- একটি পয়েন্টার, যদি op + বা - হয়
e1 op= e2 ফর্মটি e1 = e1 op e2 এর মত কাজ করে, কিন্তু e1 শুধু একবার ইভ্যালুয়েট হয়।
নিচে C++-এ কম্পাউন্ড অ্যাসাইনমেন্ট অপারেটরগুলো দেওয়া হলো:
| অপারেটর | বিবরণ |
|---|---|
| *= | প্রথম অপারেন্ডের মানকে দ্বিতীয় অপারেন্ডের মান দিয়ে গুন করুন; ফলাফল প্রথম অপারেন্ড দ্বারা নির্দিষ্ট অবজেক্টে স্টোর করুন। |
| /= | প্রথম অপারেন্ডের মানকে দ্বিতীয় অপারেন্ডের মান দিয়ে ভাগ করুন; ফলাফল প্রথম অপারেন্ড দ্বারা নির্দিষ্ট অবজেক্টে স্টোর করুন। |
| %= | প্রথম অপারেন্ডের মডুলাস নিন দ্বিতীয় অপারেন্ডের মান দিয়ে; ফলাফল প্রথম অপারেন্ড দ্বারা নির্দিষ্ট অবজেক্টে স্টোর করুন। |
| += | দ্বিতীয় অপারেন্ডের মানকে প্রথম অপারেন্ডের সাথে যোগ করুন; ফলাফল প্রথম অপারেন্ড দ্বারা নির্দিষ্ট অবজেক্টে স্টোর করুন। |
| -= | দ্বিতীয় অপারেন্ডের মানকে প্রথম অপারেন্ড থেকে বিয়োগ করুন; ফলাফল প্রথম অপারেন্ড দ্বারা নির্দিষ্ট অবজেক্টে স্টোর করুন। |
| <<= | প্রথম অপারেন্ডের মানকে দ্বিতীয় অপারেন্ডের মান নির্দিষ্ট বিট সংখ্যা লেফট শিফট করুন; ফলাফল প্রথম অপারেন্ড দ্বারা নির্দিষ্ট অবজেক্টে স্টোর করুন। |
| >>= | প্রথম অপারেন্ডের মানকে দ্বিতীয় অপারেন্ডের মান নির্দিষ্ট বিট সংখ্যা রাইট শিফট করুন; ফলাফল প্রথম অপারেন্ড দ্বারা নির্দিষ্ট অবজেক্টে স্টোর করুন। |
| &= | প্রথম এবং দ্বিতীয় অপারেন্ডের বিটওয়াইজ AND করুন; ফলাফল প্রথম অপারেন্ড দ্বারা নির্দিষ্ট অবজেক্টে স্টোর করুন। |
| ^= | প্রথম এবং দ্বিতীয় অপারেন্ডের বিটওয়াইজ এক্সক্লুসিভ OR করুন; ফলাফল প্রথম অপারেন্ড দ্বারা নির্দিষ্ট অবজেক্টে স্টোর করুন। |
| |= | প্রথম এবং দ্বিতীয় অপারেন্ডের বিটওয়াইজ ইনক্লুসিভ OR করুন; ফলাফল প্রথম অপারেন্ড দ্বারা নির্দিষ্ট অবজেক্টে স্টোর করুন। |
উদাহরণ
আসুন এই অপারেটরদের কিছু উদাহরণ দেখি:
#include <iostream>
using namespace std;
int main() {
int a = 3, b = 2;
a += b;
cout << a << endl;
a -= b;
cout << a << endl;
a *= b;
cout << a << endl;
a /= b;
cout << a << endl;
return 0;
}
এটি নিচের আউটপুট দেবে:
5 3 6 3
মনে রাখবেন এনামারেটেড টাইপে কম্পাউন্ড অ্যাসাইনমেন্ট এরর জেনারেট করে। যদি লেফট অপারেন্ড পয়েন্টার টাইপের হয়, তবে রাইট অপারেন্ড অবশ্যই পয়েন্টার টাইপের হতে হবে অথবা একটি কনস্ট্যান্ট এক্সপ্রেশন যা ০ ইভ্যালুয়েট করে। যদি লেফট অপারেন্ড ইন্টিগ্রাল টাইপের হয়, তবে রাইট অপারেন্ড পয়েন্টার টাইপের হতে পারবে না।