मुझे मानक दस्तावेज़ीकरण में कोई जवाब नहीं मिल रहा है। sizeof(bool)
हमेशा 1-बाइट है, या यह कार्यान्वयन परिभाषित किया गया है?आकार (बूल) परिभाषित किया गया है?
उत्तर
यह कार्यान्वयन परिभाषित किया गया है, और मानक स्पष्ट करने पर उल्लेखनीय जोर देता है।
§5.3.3/1, संक्षिप्त:
sizeof(char)
,sizeof(signed char)
औरsizeof(unsigned char)
1 कर रहे हैं;sizeof
का परिणाम किसी अन्य मौलिक प्रकार पर लागू कार्यान्वयन-परिभाषित है। [नोट: विशेष रूप से,sizeof(bool)
औरsizeof(wchar_t)
कार्यान्वयन-परिभाषित हैं। 69)]
फ़ुटनोट 69):
sizeof(bool)
होने की आवश्यकता नहीं है 1.
यह कार्यान्वयन परिभाषित किया गया है। मानक द्वारा केवल sizeof(char)
1
है।
कृपया ध्यान दें कि मानक में 1 से 4 बाइट हो सकता है। से हर प्रकार 4. का एक उत्पाद तो है परवाह मानक ही परिभाषित करता है कि चार 1 है, लेकिन माप को परिभाषित करता है नहीं। – user3063349
1 का अर्थ है 8 बिट या मानक – paulm
1 बाइट में 1 बाइट। बाइट प्रति बिट्स की संख्या मानक से परिभाषित नहीं है (इस पर होने की जरूरत है कम से कम 8 आईआईआरसी), लेकिन 'climits' में परिभाषित 'CHAR_BIT' में पाया जा सकता है, – peoro
देखें 5.3.3 अनुच्छेद 1:
[नोट : विशेष रूप से, आकार (बूल) और आकार (wchar_t) हैं कार्यान्वयन-defined.69)]
http://msdn.microsoft.com/en-us/library/tf4dy80a.aspx
"विजुअल C++ 4.2 में, मानक सी ++ हेडर फाइल एक typedef कि पूर्णांक के साथ bool बराबर होता है। विजुअल सी ++ 5.0 और बाद में, बूल को 1 बाइट के आकार के साथ अंतर्निर्मित प्रकार के रूप में कार्यान्वित किया जाता है। इसका मतलब है कि विजुअल सी ++ 4.2 के लिए, विज़ुअल सी ++ 5.0 और बाद में, आकार कॉल (बूल) की एक कॉल 4 उत्पन्न होती है, वही कॉल उत्पन्न होती है 1. यदि आप विज़ुअल सी ++ में टाइप बूल के स्ट्रक्चर सदस्यों को परिभाषित करते हैं तो यह स्मृति भ्रष्टाचार की समस्याएं पैदा कर सकता है। 4.2 और मिश्रण कर रहे हैं वस्तु फ़ाइलें (OBJ) और/या 4.2 और 5.0 या बाद compilers के साथ बनाया गया DLLs। "
आपको एहसास है कि यह कुछ हद तक सवाल से संबंधित है, लेकिन स्पष्ट रूप से कोई जवाब नहीं है, क्योंकि 0xbadf00d ने मानक के बारे में पूछा, कुछ विशिष्ट/मनमाने ढंग से चयनित कंपाइलर कार्यान्वयन नहीं, है ना? –
@ क्रिस्टोफरक्रेटज़िग यह counterexample द्वारा एक सबूत है। – kinokijuf
@kinokijuf यह एक counterexample नहीं है। विजुअल सी ++ में कई चीजें हैं जो मानक-अनुरूप नहीं हैं। – 0xbadf00d
- 1. Enum.values () परिभाषित किया गया है?
- 2. क्या पाइथन की बूल सॉर्टिंग परिभाषित है?
- 3. ईजेएस आंशिक परिभाषित नहीं किया गया है '
- 4. क्या मैं = 0, ++ परिभाषित किया गया है?
- 5. Magento UploaderJsObject परिभाषित नहीं किया गया है
- 6. फ़ंक्शन परिभाषित किया गया है लेकिन सी
- 7. sqlconnection को परिभाषित नहीं किया गया है
- 8. प्लॉट परिभाषित नहीं किया गया है
- 9. glGenBuffers परिभाषित नहीं किया गया है?
- 10. DEBUG मैक्रो परिभाषित किया गया है?
- 11. getActivity() जहां इसे परिभाषित किया गया है?
- 12. ऐस संपादक "परिभाषित परिभाषित नहीं किया गया है"
- 13. है (बूल | बूल) सुरक्षित?
- 14. समानांतर कोड के लिए स्केलेबिलिटी कैसे परिभाषित किया गया है?
- 15. पायथन नाम त्रुटि: वैश्विक नाम 'NAME' परिभाषित नहीं किया गया है! (लेकिन यह परिभाषित किया गया है)
- 16. सी ++ आकार के साथ बूल
- 17. Jquery फ़ंक्शन परिभाषित नहीं किया गया
- 18. पायथन, नाम परिभाषित नहीं किया गया
- 19. नोड __dirname परिभाषित नहीं किया गया
- 20. एनएससीओनक्टाडेटा क्या है, और इसे कहां परिभाषित किया गया है?
- 21. जावा का बूलियन आदिम आकार क्यों परिभाषित नहीं किया गया है?
- 22. कोई सेम 'transactionManager' नाम परिभाषित किया गया है
- 23. MATLAB: फ़ील्डनाम के आदेश को परिभाषित किया गया है?
- 24. "prefix 'साबुन को परिभाषित नहीं किया गया है" xslt फ़ाइल
- 25. पायथन त्रुटि: नाम 'व्यवस्थापक' परिभाषित नहीं किया गया है
- 26. कर्सर लाइन का रंग कहां परिभाषित किया गया है?
- 27. नाम त्रुटि: वैश्विक नाम 'कम' परिभाषित नहीं किया गया है
- 28. AngularJS $ http.post (..) - त्रुटि: $ http को परिभाषित नहीं किया गया है
- 29. पायथन: नाम त्रुटि: 'स्वयं' परिभाषित नहीं किया गया है
- 30. असीमित संदर्भ त्रुटि: Google को परिभाषित नहीं किया गया है
+1 जोर देने के लिए! –
+1 फुटनोट के लिए +1। जो जोर देता है ;-) – Nawaz
क्या कोई झंडा है जिसके लिए मुझे अपने प्रोग्राम को संकलित करने की आवश्यकता है, कि मेरा कंपाइलर 'बूल' के लिए केवल 1 बाइट का उपयोग करेगा? – Eagle