2017-01-17 10 views
5

सी ++ मानक में:क्या एकमात्र प्रकार एक अनिवार्य आकार के साथ है?

sizeof(char), sizeof(signed char) और sizeof(unsigned char)1 हैं।

  1. वहाँ सी में किसी भी अन्य प्रकार ++ जो एक तय कर दी है sizeof हैं?

  2. क्या खाली संरचना इस परिभाषा से मेल खाती है?

+1

'char' का निश्चित आकार इसलिए है क्योंकि यह किसी भी सिस्टम पर सबसे छोटी पता योग्य इकाई है। और नहीं, किसी अन्य प्रकार की यह आवश्यकता नहीं है। और हां खाली संरचनाओं का आकार होना चाहिए (या वे संबोधित नहीं होंगे) ताकि उनका आकार (कम से कम) एक हो। –

उत्तर

10
  1. नहीं। आप कहते हैं के रूप में, sizeof(signed char), sizeof(unsigned char), और sizeof(char) मानक द्वारा परिभाषित कर रहे हो करने के लिए 1. ध्यान दें कि char या तो signed या unsigned लेकिन यह हमेशा एक अलग प्रकार माना जाता है होना चाहिए। (अन्यथा सूचक sizeof कुछ और कुछ की कमी के कार्यान्वयन विषय (जैसे sizeof(long)sizeof(int) से कम नहीं हो सकता है।)

  2. सी ++ मानक की आवश्यकता sizeof एक खाली कक्षा एक अभिन्न मान शून्य से अधिक होना करने के लिए करने के लिए नीचे है अंकगणित टूट जाएगा बुरी तरह)।

+0

मशीन आर्किटेक्चर के आधार पर खाली संरचना में शून्य से भिन्न आकार हो सकते हैं? – amirassov

+1

@ МирасАмир बिल्कुल। – Bathsheba

+0

@ क्वांटिन: हाँ आप सही हैं और सभ्यता में अपने मूल की पुष्टि करने के लिए, मैंने एक प्रश्न का उत्तर दिया कि कुछ हफ्तों में जाना बेहतर होना चाहिए था। धन्यवाद। – Bathsheba

-1

प्रश्न 1 के संबंध में, आपके पास stdint.h में भी प्रकार हैं।

1

1) वहाँ सी में किसी भी अन्य प्रकार ++ जो एक निश्चित sizeof है कर रहे हैं?

sizeof(T[N]) == N * sizeof(T) 

तो sizeof(char[42])42 है:

सरणियों जो आकार निर्दिष्ट किया है रहे हैं।

2) क्या खाली संरचना इस परिभाषा से मेल खाती है?

खाली struct न char, signed char या unsigned char है, इसलिए यह इस परिभाषा के अनुरूप नहीं है। (बीटीडब्ल्यू इसकी sizeof0 नहीं हो सकता है)।

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