सी

2015-12-23 5 views
5
char c = 'A'; 
printf("%d\n",sizeof(c));// output = 1 
printf("%d\n",sizeof('A')); // output = 4 

में sizeof ऑपरेटर क्यों sizeof ऑपरेटर एक ही चरित्र के लिए अलग उत्पादन देता समझना? कृपयासी

+0

क्योंकि 'ए' में कोई प्रकार नहीं है। इसे 'int' के रूप में व्याख्या किया जा रहा है। –

+2

@ डेविडहोलेज़र में इसका एक प्रकार है, और प्रकार 'int' –

+0

पर्याप्त मेला है। चूंकि 'ए' किसी भी तरह से नहीं डाला गया है, यह परिभाषा द्वारा 'int' है। मैं इस तथ्य पर अधिक ध्यान केंद्रित कर रहा था कि उन्हें परिभाषित करने में एक अंतर था। धन्यवाद! –

उत्तर

6

c प्रकार char का एक चर है; इसका आकार 1 बाइट है।

'A'int शाब्दिक है - मुझसे पूछें कि मानक क्यों कहता है। इसका आकार आपके प्लेटफ़ॉर्म पर 4 बाइट्स है (sizeof(1) जैसा ही)।

+0

बहुत पुराने दिनों में, लोगों ने 'xy' जैसे मल्टीबाइट वर्णों का उपयोग किया। पीडीपी 11 यूनिक्स कोड में बहुत सारी चीजें थीं। जब वे सी को बड़ी संख्या में मशीनों को पोर्ट करते थे तो यह ज्यादातर दूर चला गया। सी ++ ने इसे ठीक किया ... चरित्र स्थिरांक वर्ण हैं। यह उन कुछ तरीकों में से एक है जिसमें सी सी ++ का उचित सबसेट नहीं है। –