2016-10-26 17 views
5

मान लीजिए कि मेरे पास एक ही प्रकार (उदा।, Int) के दो सदस्यों a और b के साथ एक संघ है।उसी प्रकार के संघ सदस्य

union u{ 
    int a,b; 
    char c; 
}; 

अगर मैं a को लिखने, मूल्य द्वारा एक समारोह के लिए इसे पारित, और समारोह b से पढ़ता है, a मूल्य प्राप्त करने की उम्मीद कर, वहाँ किसी भी मुद्दे पर विचार किया जाएगा a और b एक ही प्रकार है? क्या सदस्य पढ़ता है कि सदस्य को दर्पण लिखने की ज़रूरत है?

+3

सी 11 ड्राफ्ट एन 1548 कह सकता है कि कोई समस्या नहीं होगी। मैं निश्चित रूप से नहीं बता सकता। अभी भी पढ़ना एक फुटनोट: "9 5) यदि सदस्य यूनियन ऑब्जेक्ट की सामग्री को पढ़ने के लिए उपयोग किया जाता है तो वह सदस्य जैसा नहीं होता है, जो पिछली बार ऑब्जेक्ट में एक मान संग्रहीत करता है, मान के ऑब्जेक्ट प्रस्तुति का उचित भाग को दोबारा परिभाषित किया गया है 6.2.6 में वर्णित नए प्रकार में ऑब्जेक्ट प्रस्तुति (एक प्रक्रिया जिसे कभी-कभी '' टाइप पनिंग 'कहा जाता है)। यह एक जाल प्रतिनिधित्व हो सकता है। " – Ryan

उत्तर

4

हाँ, यह ठीक है।

मानक (सी 11 मसौदा) का कहना है:

[...] अगर एक संघ कई संरचनाओं कि साझा एक आम प्रारंभिक अनुक्रम (नीचे देखें), और यदि संघ वस्तु वर्तमान में से एक होता है इन संरचनाओं, यह उनमें से किसी कहीं भी है कि संघ के पूरा प्रकार की घोषणा दिखाई

यहाँ दो पूर्णांकों होने के लिए विचार किया जा सकता है की आम प्रारंभिक भाग (बहुत सिम का निरीक्षण करने की अनुमति दी है पीएल) संरचनाएं जो समान प्रारंभिक अनुक्रम साझा करती हैं।

भी अनदेखी है कि, वहाँ भी है:

सदस्य एक संघ ऑब्जेक्ट की सामग्री को पढ़ने के लिए उपयोग किया है, एक ही सदस्य के रूप में पिछले वस्तु में एक मूल्य के स्टोर करने के लिए इस्तेमाल नहीं किया है उचित मूल्य की वस्तु प्रतिनिधित्व का हिस्सा नए प्रकार

में एक वस्तु प्रतिनिधित्व पुनर्व्याख्या कर एक int एक int के रूप में बहुत सुरक्षित है के रूप में व्याख्या की है। :)

संबंधित मुद्दे