c - What are the values in a struct when uninitialized? -
मान लें कि मेरे पास एक स्ट्रेट है:
typedef struct {int a; फ्लोट बी; } सामान;
अगर मेरे पास कोड है:
सामान myStuff; Printf ("% d", myStuff.a);
मुझे क्या मिलेगा? क्या क्षेत्र हमेशा 0 से आरंभ होगा?
सी 11 में, किसी भी स्ट्रक्चर सदस्य जिन्हें स्पष्ट रूप से प्रारंभ नहीं किया गया है ( जैसा कि आपके लिए मामला है) अनिश्चित मान C11 6.7.9 / 10:
यदि किसी ऑब्जेक्ट में स्वत: भंडारण की अवधि को स्पष्ट रूप से प्रारंभ नहीं किया गया है, तो इसका मान अनिश्चित है।
ऐसे अनिश्चितता को पढ़ना मूल्य अपरिभाषित व्यवहार उत्पन्न करता है C11 6.3.2.1/2:
यदि लावल्यू स्वत: भंडारण अवधि के एक ऑब्जेक्ट को निर्दिष्ट करता है जो कि
रजिस्टर
स्टोरेज वर्ग (कभी भी इसका पता नहीं था) के साथ घोषित किया जा सकता था ), और उस ऑब्जेक्ट को प्रारंभ नहीं किया गया है (प्रारंभकर्ता के साथ घोषित नहीं किया गया है और इसका कोई असाइनमेंट उपयोग करने से पहले किया गया है), व्यवहार अनिर्धारित है।
अंत में, अनुबंध J.2 (अपरिभाषित व्यवहार) यह स्पष्ट करता है:
व्यवहार निम्नलिखित परिस्थितियों में अनिर्धारित है:
- स्वत: भंडारण अवधि के साथ ऑब्जेक्ट का मान उपयोग किया जाता है, जबकि यह अनिश्चित ( 6.2.4, 6.7.9, 6.8)।
Comments
Post a Comment