कंपाउंड असाइनमेंट ऑपरेटर्स को 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
ध्यान दें कि एन्यूमरेटेड टाइप पर कंपाउंड असाइनमेंट एक एरर मैसेज उत्पन्न करता है। यदि बायां ऑपरेंड पॉइंटर प्रकार का है, तो दायां ऑपरेंड पॉइंटर प्रकार का होना चाहिए या यह एक कॉन्स्टेंट एक्सप्रेशन होना चाहिए जो 0 का मूल्यांकन करता है। यदि बायां ऑपरेंड इंटीग्रल प्रकार का है, तो दायां ऑपरेंड पॉइंटर प्रकार का नहीं होना चाहिए।