नहीं, यादृच्छिक व्यवहार (कम से कम, नीचे देखें) अनिश्चित व्यवहार के बाद उस बूल से पढ़ना, इसलिए कोई गारंटी नहीं है कि मूल्य क्या लौटाया जाएगा।
यह पता बदल सकता है कि विशेष रूप वास्तुकला में, एक bool
का मूल्य प्रतिनिधित्व, केवल उच्च आदेश बिट के होते हैं जो मामले बाइट (ओं) का bool
बारी होगा से अधिक 123 प्रसारण द्वारा उत्पादित मूल्य में false
का प्रतिनिधित्व करने के लिए बाहर।
सी ++ मानक निर्दिष्ट नहीं करता है कि true
और false
मानों का प्रतिनिधित्व करने वाले वास्तविक बिट पैटर्न क्या हैं। एक कार्यान्वयन bool
के ऑब्जेक्ट प्रस्तुति में किसी भी या सभी बिट्स का उपयोग कर सकता है - जो कम से कम एक बाइट होना चाहिए, लेकिन यह लंबा हो सकता है - और यह एक ही मान के लिए एक से अधिक बिट पैटर्न को मैप कर सकता है:
§ 3.9.1 [basic.fundamental]/1:
है & hellip; संकीर्ण चरित्र प्रकार के लिए, वस्तु प्रतिनिधित्व के सभी बिट्स मूल्य प्रतिनिधित्व में भाग लेते हैं। हस्ताक्षरित संकीर्ण चरित्र प्रकारों के लिए, मूल्य प्रतिनिधित्व का प्रत्येक संभव बिट पैटर्न एक अलग संख्या का प्रतिनिधित्व करता है। ये आवश्यकताएं अन्य प्रकारों के लिए नहीं हैं।
एक ही अनुभाग के अनुच्छेद 6 प्रकार bool
के मूल्यों या तो true
या false
होने की आवश्यकता है, लेकिन एक फुटनोट बताते हैं कि अपरिभाषित व्यवहार का सामना करने में एक bool
"के रूप में अगर यह न तो सही है और न ही गलत है व्यवहार करते हैं हो सकता है। " (यह अपरिभाषित व्यवहार की सीमा के भीतर स्पष्ट रूप से है, अगर एक कार्यक्रम दर्शाती यूबी, वहाँ कोई आवश्यकताओं इसके निष्पादन पर जो भी कर रहे हैं, पहले भी यूबी इसका सबूत है।) मानक परमिट पर निम्न स्तर के स्मृति नकल आपरेशन का उपयोग करने में
कुछ भी नहीं है संकीर्ण वर्णों के सरणी के अलावा अन्य वस्तुएं, उस मामले को छोड़कर जिसमें ऑब्जेक्ट त्रिकोणीय रूप से कॉपी करने योग्य है और ऑब्जेक्ट प्रस्तुति इसे बफर में कॉपी करके सहेजी जाती है और बाद में इसे कॉपी करके पुन: स्थापित की जाती है। सी लाइब्रेरी फ़ंक्शंस का कोई अन्य उपयोग जो ऑब्जेक्ट प्रस्तुति में मनमानी बाइट्स को ओवरराइट करता है, अनिर्धारित व्यवहार की सामान्य परिभाषा ("[मानक] व्यवहार की किसी भी स्पष्ट परिभाषा को छोड़ देता है") द्वारा परिभाषित किया जाना चाहिए। लेकिन मुझे इस बात से सहमत होने के लिए मजबूर होना पड़ता है कि memset
यूबी है, और इसलिए मैं अनिर्दिष्ट व्यवहार पर बसूंगा, जो bool
के प्रतिनिधित्व के बाद से स्पष्ट रूप से स्पष्ट नहीं है।
यदि आप इसे एक बड़े-एंडियन सीपीयू पर चलाते हैं, तो आप '0' वापस लौटने की संभावना रखते हैं। –
@mark: memset सभी बाइट्स को एक ही मान पर सेट करता है (123/इस मामले में) – rici
* "मानक मानक सही व्यवहार की गारंटी देता है ..." * - मानक * हमेशा * परिभाषा के अनुसार सही व्यवहार की गारंटी देता है ** , क्योंकि जब यह व्यवहार को परिभाषित करता है तो किसी भी अनुकूल कार्यान्वयन को प्रदान करना चाहिए, और जब कोई व्यवहार सही नहीं होता है।"बूल्स माना जाता है" में आपका नेतृत्व का तात्पर्य है कि आपके पास 'int {1}' दिमाग में "सही" होने के रूप में दिमाग है, लेकिन यह ज्ञापन है कि 'स्मृति' को अपरिभाषित व्यवहार का कारण बनता है। –