Are conditional expressions in C++ always of bool type? -
सी सशर्त-उन्मुख ऑपरेटरों में या तो 1 या 0 का मूल्यांकन करें प्रकार int (भले ही यह समर्पित है _Bool प्रकार) है संदर्भ:
C11 §6.5.8 / 6 रिलेशनल ऑपरेटर्स
प्रत्येक ऑपरेटर
& lt;(& gt;(से अधिक),& lt; =(से कम या बराबर), और& gt; =(से अधिक) या उसके बराबर) 1 यदि विशिष्ट संबंध सही है और 0 यदि यह गलत है तो 1 होगा। 107) परिणाम के प्रकारint।C11 §6.5.9 / 3 समानता ऑपरेटर
==(बराबर) और! =(बराबर नहीं ) ऑपरेटर रिलायलल ऑपरेटर के अनुरूप हैं, इसके अलावा उनकी निम्न प्राथमिकता नहीं है। 108) प्रत्येक ऑपरेटरों का उत्पादन 1 अगर विशिष्ट संबंध सही है और 0 यदि यह गलत है परिणाम के प्रकारintहै किसी भी जोड़ी के परिपथों के लिए, वास्तव में एक संबंध सही है।C11 6.5.13 / 3 तार्किक और ऑपरेटर
& amp; & Amp;ऑपरेटर 1 उपज देगा यदि उसके दोनों ऑपरेटरों 0 से असमान की तुलना करते हैं; अन्यथा, यह 0 पैदावार है। परिणाम के प्रकारintहै।C11 6.5.14 / 3 तार्किक या ऑपरेटर
=ऑपरेटर 1 का उपज देगा यदि उसके संचालकों में से कोई 0 से असमान की तुलना करे; अन्यथा, यह 0 पैदावार है। परिणाम के प्रकारint।
जैसा कि मैंने सी ++ की जांच की है, इस मामले में अलग-अलग प्रतीत होता है, जैसा कि निम्नलिखित उदाहरण (देखें):
<पूर्व> #include & lt; iostream & gt; #include & lt; typeinfo & gt; Int main () {डबल एक्स = 10.0; Std :: cout & lt; & lt; टाइपिड (एक्स एंड एलटी; = 10.0) .name () & lt; & lt; std :: endl; वापसी 0; } आउटपुट b , जो मुझे लगता है कि bool प्रकार इंगित करता है क्या C ++ गारंटी देता है कि ये सभी ऑपरेटर हमेशा bool प्रकार (सी के विपरीत) का मूल्यांकन करते हैं? सी के विपरीत, सी ++ में, रिलेशनल ऑपरेटर, समानता ऑपरेटरों और तार्किक ऑपरेटरों (तार्किक और, तार्किक या।)
उदाहरण के लिए:
(C + + 11, 5.9p1 रिलेशनल ऑपरेटर्स)।
"[...] परिणाम का प्रकार बूल है।"
संपादित करें: पूर्णता के लिए, ऊपर सूचीबद्ध सभी ऑपरेटरों को ओवरलोड किया जा सकता है और इस प्रकार परिणामी प्रकार को बदला जा सकता है वास्तविक जीवन के लिए अर्ने वोगल का उत्तर देखें।
Comments
Post a Comment