क्या एक बूलियन पूर्णांक में परिवर्तित होने पर हमेशा शून्य या एक बन सकता है?
बूलियन मान को पूर्णांक में परिवर्तित करते समय, कई कंपाइलर प्रतीत होते हैं केवल 0 या 1 को बनाए रखना, इस व्यवहार की विश्वसनीयता पर सवाल उठाता है। आइए एक उदाहरण देखें:
int a = 2; bool b = a; int c = 3 b; // What is the result? 4 or 5?
उत्तर: हां, पूर्णांक में परिवर्तित होने पर बूल 0 या 1 होने की गारंटी है।
सी में:
सी मानक (§4.5/4) स्पष्ट रूप से कहता है: "बूल प्रकार के प्रतिद्वंद्विता को प्रकार के प्रतिद्वंद्विता में परिवर्तित किया जा सकता है int, जिसमें false शून्य हो जाता है और true एक हो जाता है। 1.2/1): "जब किसी स्केलर मान को _बूल में परिवर्तित किया जाता है, तो परिणाम 0 होता है यदि मान की तुलना 0 के बराबर होती है; अन्यथा, परिणाम होता है 1।"
इंट में कनवर्ट करते समय, प्रक्रिया सीधी होती है क्योंकि int 0 और 1 को पकड़ सकता है, इसलिए मान में कोई बदलाव नहीं होता है (§6.3.1.3)।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3