लॉजिकल ऑपरेटर्स की अवधारणा सरल है। वे एक प्रोग्राम को कई शर्तों के आधार पर निर्णय लेने की अनुमति देते हैं। प्रत्येक ऑपरेंड को एक शर्त माना जाता है जिसे सच या गलत मान में मूल्यांकन किया जा सकता है। फिर शर्तों के मान का उपयोग op1 ऑपरेटर op2 या !op1 ग्रुपिंग के समग्र मान को निर्धारित करने के लिए किया जाता है।
लॉजिकल OR ऑपरेटर (||) बूलियन मान सच लौटाता है यदि कोई या दोनों ऑपरेंड्स सच हैं और अन्यथा गलत लौटाता है। ऑपरेंड्स को मूल्यांकन से पहले अंतर्निहित रूप से bool प्रकार में परिवर्तित किया जाता है, और परिणाम bool प्रकार का होता है। लॉजिकल OR में लेफ्ट-टू-राइट असोसिएटिविटी होती है। लॉजिकल OR ऑपरेटर के ऑपरेंड्स एक ही प्रकार के होने की आवश्यकता नहीं है, लेकिन वे इंटीग्रल या पॉइंटर प्रकार के होने चाहिए। ऑपरेंड्स आमतौर पर रिलेशनल या इक्वलिटी एक्सप्रेशन्स होते हैं।
पहला ऑपरेंड पूरी तरह से मूल्यांकन किया जाता है और सभी साइड इफेक्ट्स लॉजिकल OR एक्सप्रेशन के मूल्यांकन को जारी रखने से पहले पूरे होते हैं। दूसरा ऑपरेंड केवल तभी मूल्यांकन किया जाता है जब पहला ऑपरेंड गलत (0) मूल्यांकन करता है। यह दूसरी ऑपरेंड के अनावश्यक मूल्यांकन को समाप्त करता है जब लॉजिकल OR एक्सप्रेशन सच होता है।
लॉजिकल AND ऑपरेटर (&&) बूलियन मान सच लौटाता है यदि दोनों ऑपरेंड्स सच हैं और अन्यथा गलत लौटाता है। ऑपरेंड्स को मूल्यांकन से पहले अंतर्निहित रूप से bool प्रकार में परिवर्तित किया जाता है, और परिणाम bool प्रकार का होता है। लॉजिकल AND में लेफ्ट-टू-राइट असोसिएटिविटी होती है। लॉजिकल AND ऑपरेटर के ऑपरेंड्स एक ही प्रकार के होने की आवश्यकता नहीं है, लेकिन वे इंटीग्रल या पॉइंटर प्रकार के होने चाहिए। ऑपरेंड्स आमतौर पर रिलेशनल या इक्वलिटी एक्सप्रेशन्स होते हैं।
पहला ऑपरेंड पूरी तरह से मूल्यांकन किया जाता है और सभी साइड इफेक्ट्स लॉजिकल AND एक्सप्रेशन के मूल्यांकन को जारी रखने से पहले पूरे होते हैं। दूसरा ऑपरेंड केवल तभी मूल्यांकन किया जाता है जब पहला ऑपरेंड सच (नॉन-जीरो) मूल्यांकन करता है। यह मूल्यांकन दूसरी ऑपरेंड के अनावश्यक मूल्यांकन को समाप्त करता है जब लॉजिकल AND एक्सप्रेशन गलत होता है।
लॉजिकल नेगेशन ऑपरेटर (!) अपने ऑपरेंड का अर्थ उलट देता है। ऑपरेंड अंकगणितीय या पॉइंटर प्रकार का होना चाहिए (या एक अभिव्यक्ति जो अंकगणितीय या पॉइंटर प्रकार में मूल्यांकन करती है)। ऑपरेंड को अंतर्निहित रूप से bool प्रकार में परिवर्तित किया जाता है। परिणाम सच है यदि परिवर्तित ऑपरेंड गलत है; परिणाम गलत है यदि परिवर्तित ऑपरेंड सच है। परिणाम bool प्रकार का है।
उदाहरण
#include<iostream>
using namespace std;
int main() {
bool x = true, y = false;
cout << (x || y) << endl;
cout << (x && y) << endl;
cout << (!x) << endl;
return 0;
}
आउटपुट
यह निम्न आउटपुट देगा:
1 0 0
ऐसा इसलिए है क्योंकि 2 में से एक गलत है, इसलिए AND गलत है, एक सच है इसलिए OR सच है और x (सच) का NOT गलत है, यानी 0।