কম্পাউন্ড অ্যাসাইনমেন্ট অপারেটরগুলো 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
মনে রাখবেন এনামারেটেড টাইপে কম্পাউন্ড অ্যাসাইনমেন্ট এরর জেনারেট করে। যদি লেফট অপারেন্ড পয়েন্টার টাইপের হয়, তবে রাইট অপারেন্ড অবশ্যই পয়েন্টার টাইপের হতে হবে অথবা একটি কনস্ট্যান্ট এক্সপ্রেশন যা ০ ইভ্যালুয়েট করে। যদি লেফট অপারেন্ড ইন্টিগ্রাল টাইপের হয়, তবে রাইট অপারেন্ড পয়েন্টার টাইপের হতে পারবে না।