"हमेशा होता हैसबसे प्लेटफार्मों पर 32-बिट" - क्या है कि स्निपेट के साथ गलत क्या है? :-)
सी मानक के वैरिएबल के आकार जनादेश नहीं है। यह जनादेश सापेक्ष आकार, उदाहरण के लिए, sizeof(int) >= sizeof(short)
और इसी तरह से। यह न्यूनतम श्रेणियों को भी जरूरी बनाता है लेकिन एकाधिक एन्कोडिंग योजनाओं (दो पूरक, एक 'पूरक, और साइन/परिमाण) की अनुमति देता है।
आप एक विशिष्ट आकार चर चाहते हैं, आप एक मंच आप इस तरह के #ifdef
के के उपयोग के रूप में चला रहे हैं, के लिए उपयुक्त उपयोग करने की आवश्यकता है, कुछ की तरह:
#ifdef LONG_IS_32BITS
typedef long int32;
#else
#ifdef INT_IS_32BITS
typedef int int32;
#else
#error No 32-bit data type available
#endif
#endif
वैकल्पिक रूप से, C99 की अनुमति देता है सटीक चौड़ाई पूर्णांक प्रकार intN_t
और uintN_t
के लिए:
- typedef नाम
intN_t
वाई के साथ एक हस्ताक्षरित पूर्णांक प्रकार निर्दिष्ट डीटीएच N
, कोई पैडिंग बिट्स, और एक दो के पूरक प्रतिनिधित्व। इस प्रकार, int8_t
वास्तव में 8 बिट की चौड़ाई के साथ एक हस्ताक्षरित पूर्णांक प्रकार को दर्शाता है।
- typedef नाम
uintN_t
चौड़ाई N
साथ एक अहस्ताक्षरित पूर्णांक प्रकार निर्दिष्ट करता है। इस प्रकार, uint24_t
वास्तव में 24 बिट की चौड़ाई के साथ एक अहस्ताक्षरित पूर्णांक प्रकार को दर्शाता है।
- ये प्रकार वैकल्पिक हैं।हालांकि, यदि कोई कार्यान्वयन 8, 16, 32, या 64 बिट्स, कोई पैडिंग बिट्स और (हस्ताक्षरित प्रकारों के लिए) के साथ पूर्णांक प्रकार प्रदान करता है जिसमें दो पूरक पूरक हैं, तो यह संबंधित टाइप किए गए नामों को परिभाषित करेगा।
आधुनिक 8 बिट और 16 बिट प्रोसेसर हैं, बस पीसी वातावरण में नहीं। – Gerhard