Wednesday 15 February 2012

c++ - Is the rest element of array initialized when no more element in initialization list -


क्या व्यवहार को अच्छी तरह परिभाषित किया गया है?

  #include & lt; iostream & gt; नेमस्पेस एसटीडी का उपयोग करना; Int main (int argc, char * argv []) {int a [10] = {1, 2, 3, 4, 5}; के लिए (कॉन्स्ट ऑटो & amp; i: ए) सीओएटी & एलटी; & lt; मैं & lt; & lt; endl; वापसी 0; }   

आउटपुट:

  1 2 3 4 5 0 0 0 0 0   < / Div> 

हाँ, अतिरिक्त तत्व "शून्य" (इंटिजर्स से 0, फ्लोटिंग-पॉइंट संख्या 0.0 से, > NULL )।

अधिक सटीक, सी मानक के लिए आवश्यक है कि उन्हें आरंभ किया गया है जैसे कि उनके पास स्थिर भंडारण अवधि है:

C99 मानक, पैराग्राफ 6.7.8.21:

यदि ब्रेस-संलग्न सूची में कम प्रारंभिक हैं, तो एक स्ट्रिंग में कोई कुल या कम वर्ण वाले तत्व या सदस्य हैं सरणी में तत्वों की तुलना में ज्ञात आकार की एक सरणी को प्रारंभ करने के लिए शाब्दिक प्रयोग किया जाता था, कुल शेष को इन्सटाइज किया जाना चाहिए, जो ऑब्जेक्ट के रूप में स्थिर भंडारण अवधि है।

6.7.8.10 :

यदि किसी ऑब्जेक्ट में स्वचालित स्टोरेज अवधि को स्पष्ट रूप से प्रारंभ नहीं किया गया है, तो इसका मान अनिश्चित है यदि कोई ऑब्जेक्ट जिसमें स्थिर भंडारण अवधि होती है, तो स्पष्ट रूप से प्रारंभ नहीं की जाती है, तो:

एक ???? यदि यह सूचक प्रकार है, तो यह एक अशक्त सूचक के लिए आरम्भ किया जाता है;

एक ???? यदि यह अंकगणित प्रकार है, तो यह (सकारात्मक या अहस्ताक्षरित) शून्य पर आरंभ किया जाता है;

एक ???? यदि यह एक कुल है, तो प्रत्येक सदस्य को इन नियमों के अनुसार आरंभीकृत किया जाता है;

एक ???? अगर यह एक संघ है, तो इन नियमों के मुताबिक, एक सदस्य का नाम आरआईएस (आरंभीकृत) आरम्भ किया जाता है।

अरे, यह सी ++ है (युआन को छोड़कर कोई भी, इस बात का एहसास हुआ, धन्यवाद!)

तो पैराग्राफ 8.5.1.7 सी ++ 11:

एक प्रकार के ऑब्जेक्ट को प्रारंभ करने के लिए टी का अर्थ है:

एक ???? अगर टी एक (संभवतः सीवी-क्वालिटी ऐड) वर्ग प्रकार (क्लॉज 9) को उपयोगकर्ता द्वारा प्रदत्त कंस्ट्रक्टर (12.1) के साथ है, तो टी के लिए डिफॉल्ट कन्स्ट्रक्टर को (और यदि टी नहीं सुलभ डिफ़ॉल्ट कन्स्ट्रक्टर);

एक ???? यदि टी एक (संभवत: सीवी-योग्यता है) गैर-यूनियन वर्ग प्रकार बिना किसी उपयोगकर्ता-दिए गए कन्स्ट्रक्टर के, तो ऑब्जेक्ट शून्य-आरंभीकृत है, और यदि टीएपी का निहित-घोषित डिफ़ॉल्ट कन्स्ट्रक्टर गैर- तुच्छ, उस निर्माता को कहा जाता है।

â ???? यदि टी एक सरणी प्रकार है, तो प्रत्येक तत्व मूल्य-आरंभीकृत है;

एक ???? अन्यथा, ऑब्जेक्ट शून्य-आरंभीकृत है।

8.5.1.5:

किसी ऑब्जेक्ट या संदर्भ को शून्य-प्रारंभ करने के लिए प्रकार टी का अर्थ है:

एक ???? यदि टी एक स्केलर प्रकार (3. 9) है, तो ऑब्जेक्ट मान 0 (शून्य) पर सेट है, जिसे अभिन्न निरंतर अभिव्यक्ति के रूप में लिया जाता है, जिसे टी में परिवर्तित किया जाता है; 103

एक ???? अगर टी एक (संभवतः सीवी-क्वालिटी एड) गैर-यूनियन वर्ग प्रकार है, प्रत्येक गैर-स्थिर डेटा सदस्य और प्रत्येक बेस-क्लास सबोबैक्ट शून्य-आरंभीकृत है और पैडिंग शून्य बिट्स के लिए आरंभीकृत है;

एक ???? यदि टी एक (संभवत: सीवी-योग्यता संस्करण) यूनियन प्रकार है, तो ऑब्जेक्ट 'एस' ï आर 'गैर-स्टेटिक नामित डेटा सदस्य को ज़ोरोइनेइज्ड किया जाता है और पैडिंग को शून्य बिट्स के लिए आरम्भ किया जाता है; < p> एक ???? यदि टी एक सरणी प्रकार है, तो प्रत्येक तत्व शून्य-आरंभीकृत है;

एक ???? यदि टी एक संदर्भ प्रकार है, तो कोई आरंभीकरण नहीं किया जाता है।

No comments:

Post a Comment