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