कंडीशनल ऑपरेटर (?:) एक टर्नरी ऑपरेटर है (यह तीन ऑपरेंड्स लेता है)। कंडीशनल ऑपरेटर निम्नानुसार कार्य करता है:
- पहला ऑपरेंड अंतर्निहित रूप से bool में परिवर्तित होता है। इसका मूल्यांकन किया जाता है और सभी साइड इफेक्ट्स जारी रखने से पहले पूरे होते हैं।
- यदि पहला ऑपरेंड सच (1) मूल्यांकन करता है, तो दूसरा ऑपरेंड मूल्यांकन किया जाता है।
- यदि पहला ऑपरेंड गलत (0) मूल्यांकन करता है, तो तीसरा ऑपरेंड मूल्यांकन किया जाता है।
- कंडीशनल ऑपरेटर का परिणाम मूल्यांकन किए गए ऑपरेंड का परिणाम होता है - दूसरा या तीसरा। कंडीशनल एक्सप्रेशन में अंतिम दो ऑपरेंड्स में से केवल एक का मूल्यांकन किया जाता है। कंडीशनल ऑपरेटर का मूल्यांकन बहुत जटिल है। उपरोक्त चरण केवल इसका एक त्वरित परिचय थे। कंडीशनल एक्सप्रेशन्स में राइट-टू-लेफ्ट असोसिएटिविटी होती है। पहला ऑपरेंड इंटीग्रल या पॉइंटर प्रकार का होना चाहिए।
- निम्नलिखित नियम दूसरे और तीसरे ऑपरेंड्स पर लागू होते हैं:
- यदि दोनों ऑपरेंड्स एक ही प्रकार के हैं, तो परिणाम उस प्रकार का होता है।
- यदि दोनों ऑपरेंड्स अंकगणितीय या एन्यूमरेशन प्रकार के हैं, तो सामान्य अंकगणितीय रूपांतरण (स्टैंडर्ड कन्वर्ज़न में शामिल) उन्हें एक सामान्य प्रकार में परिवर्तित करने के लिए किए जाते हैं।
- यदि दोनों ऑपरेंड्स पॉइंटर प्रकार के हैं या यदि एक पॉइंटर प्रकार का है और दूसरा एक कॉन्स्टेंट एक्सप्रेशन है जो 0 का मूल्यांकन करता है, तो पॉइंटर रूपांतरण उन्हें एक सामान्य प्रकार में परिवर्तित करने के लिए किए जाते हैं।
- यदि दोनों ऑपरेंड्स रेफरेंस प्रकार के हैं, तो रेफरेंस रूपांतरण उन्हें एक सामान्य प्रकार में परिवर्तित करने के लिए किए जाते हैं।
- यदि दोनों ऑपरेंड्स प्रकार void के हैं, तो सामान्य प्रकार void है।
- यदि दोनों ऑपरेंड्स एक ही यूजर-डिफाइंड प्रकार के हैं, तो सामान्य प्रकार वह प्रकार है।
- यदि ऑपरेंड्स के अलग-अलग प्रकार हैं और कम से कम एक ऑपरेंड का यूजर-डिफाइंड प्रकार है तो भाषा नियम सामान्य प्रकार निर्धारित करने के लिए उपयोग किए जाते हैं।
उदाहरण
#include <iostream>
using namespace std;
int main() {
int i = 1, j = 2;
cout << (i > j ? i : j) << " is greater." << endl;
}
आउटपुट
इससे निम्न आउटपुट मिलेगा:
2 is greater.