स्क्रीन पर printf क्या लिखेंगे?आकार (char + char) 4 क्यों लौटाता है?
मैंने सोचा क्योंकि आकार (char) = 1, आकार (ए + बी) भी 1 होगा, लेकिन यह 4 हो गया। मुझे यह समझ में नहीं आया, अगर हम जोड़ रहे हैं तो यह 4 क्यों लिखता है दो अक्षर?
स्क्रीन पर printf क्या लिखेंगे?आकार (char + char) 4 क्यों लौटाता है?
मैंने सोचा क्योंकि आकार (char) = 1, आकार (ए + बी) भी 1 होगा, लेकिन यह 4 हो गया। मुझे यह समझ में नहीं आया, अगर हम जोड़ रहे हैं तो यह 4 क्यों लिखता है दो अक्षर?
लगभग सभी अंकगणितीय ऑपरेटर की सी भाषा ऑपरेंड में निहित रूपांतरण सामान्य गणित रूपांतरण या, इस मामले में, पूर्णांक प्रोन्नति कहा जाता है के अधीन हैं। char
टाइप करने के लिए int
टाइप करने के लिए प्रचारित किया जाता है और वास्तविक प्लेटफ़ॉर्म int
(या unsigned int
) के डोमेन के भीतर उस प्लेटफ़ॉर्म पर char
के गुणों के आधार पर किया जाता है)। तो आपका a + b
वास्तव में (int) a + (int) b
के रूप में व्याख्या किया गया है। परिणाम int
और sizeof(int)
आपके प्लेटफ़ॉर्म पर स्पष्ट रूप से 4 है। वह 4 जो आप देखते हैं।
और %d
printf
sizeof
के परिणाम का उपयोग न करें। sizeof
का परिणाम size_t
है, जबकि %d
को int
तर्क की आवश्यकता है। तो, या तो
printf("%zu\n", sizeof(a+b));
या कम से कम उचित प्रारूप विनिर्देशक का उपयोग तर्क डाली यदि आप यकीन है कि यह
printf("%d\n", (int) sizeof(a+b));
_integral पदोन्नति_ के बारे में कभी नहीं सुना। – chux
@chux - यह पुराना सी 9 0 शब्द है - औपचारिक मानक शब्द पूर्णांक प्रचार है। [यहां] देखें (http://stackoverflow.com/questions/12094412/what-is-the-difference-between-integral-promotion-and-balancing-in-c) और [यहां] (http: // stackoverflow। कॉम/प्रश्न/10660758/अभिन्न पदोन्नति) – Krease
@ क्रिसिस के लिए मैं देखता हूं: -> "इंटीग्रल प्रोन्नति" पुराना सी 9 0 शब्द है, औपचारिक मानक शब्द पूर्णांक प्रचार है। – chux
फिट बैठता है यह sizeof(char)
, तर्क (का परिणाम यानी के रूप में ही नहीं है) को int
पर प्रचारित किया गया है, इसलिए sizeof(a + b)
वास्तव में sizeof(int)
के बराबर है। यदि आप परिणाम को char
पर डाल देते हैं तो यह वही होगा जो आप उम्मीद करते हैं। साथ ही, sizeof
परिणाम के लिए सही प्रारूप विनिर्देश size_t
%zu
है और %d
नहीं है।
printf("%zu", sizeof((char) (a + b)));
आप उम्मीद कर रहे हैं क्या प्रयास करें? आपने 'sizeof' ऑपरेटर के बारे में क्या पढ़ा? –
मुझे उम्मीद है कि यह वापस लौटाएगा। मुझे पता है कि यह बाइट्स में एक प्रकार या चर के आकार को लौटाता है, और वहां फिट बैठने वाले सटीक वर्णों की संख्या। – Nebeski
'ए + बी' एक पूर्णांक मूल्यांकन है। –