यूनिक्स दुनिया में, 64-बिट प्लेटफार्मों के लिए पूर्णांक और पॉइंटर्स के आकार के लिए कुछ संभव व्यवस्थाएं थीं। ज्यादातर व्यापक रूप से इस्तेमाल किए जाने वाले दो ILP64 थे (वास्तव में, इसका केवल कुछ ही उदाहरण हैं; क्रे एक ऐसा था) और LP64 (लगभग हर चीज के लिए)। संक्षेप from इंट, लॉन्ग, पॉइंटर्स 64-बिट ’और point लॉन्ग, पॉइंटर्स 64-बिट’ से आते हैं।
Type ILP64 LP64 LLP64
char 8 8 8
short 16 16 16
int 64 32 32
long 64 64 32
long long 64 64 64
pointer 64 64 64
ILP64 प्रणाली को LP64 के पक्ष में छोड़ दिया गया (अर्थात, लगभग सभी बाद के प्रवेशकों ने LP64 का उपयोग किया, एस्पेन समूह की सिफारिशों के आधार पर, केवल 64-बिट ऑपरेशन की लंबी विरासत वाले सिस्टम एक अलग योजना का उपयोग करते हैं)। सभी आधुनिक 64-बिट यूनिक्स सिस्टम LP64 का उपयोग करते हैं। MacOS X और लिनक्स दोनों आधुनिक 64-बिट सिस्टम हैं।
Microsoft 64-बिट में परिवर्तन के लिए एक अलग योजना का उपयोग करता है: LLP64 ('लंबी लंबी, संकेत 64-बिट')। इसका अर्थ यह है कि 32-बिट सॉफ़्टवेयर को बिना परिवर्तन के पुनः चलाया जा सकता है। इसमें हर किसी के द्वारा अलग होने का अवगुण होता है, और 64-बिट कैपेसिटी के दोहन के लिए कोड को संशोधित करने की भी आवश्यकता होती है। हमेशा संशोधन आवश्यक था; यह यूनिक्स प्लेटफार्मों पर आवश्यक लोगों से संशोधन का एक अलग सेट था।
यदि आप अपने सॉफ़्टवेयर को प्लेटफ़ॉर्म-न्यूट्रल पूर्णांक प्रकार के नामों के आसपास डिज़ाइन करते हैं, तो संभवतः C99 <inttypes.h>
हेडर का उपयोग करते हुए , जो, जब प्लेटफ़ॉर्म पर उपलब्ध प्रकार, हस्ताक्षरित (सूचीबद्ध) और अहस्ताक्षरित (सूचीबद्ध नहीं हैं, तो 'u' के साथ उपसर्ग):
int8_t
- 8-बिट पूर्णांक
int16_t
- 16-बिट पूर्णांक
int32_t
- 32-बिट पूर्णांक
int64_t
- 64-बिट पूर्णांक
uintptr_t
- अहस्ताक्षरित पूर्णांक बड़े बिंदुओं को पकड़ने के लिए
intmax_t
- प्लेटफ़ॉर्म पर पूर्णांक का सबसे बड़ा आकार (इससे बड़ा हो सकता है int64_t
)
फिर आप इन प्रकारों का उपयोग करके अपने आवेदन को कोड कर सकते हैं जहां यह मायने रखता है, और सिस्टम प्रकारों के साथ बहुत सावधान रहना (जो अलग हो सकता है)। एक intptr_t
प्रकार है - पॉइंटर्स रखने के लिए एक हस्ताक्षरित पूर्णांक प्रकार; आपको इसका उपयोग न करने, या केवल दो uintptr_t
मानों ( ptrdiff_t
) के घटाव के परिणाम के रूप में उपयोग करने की योजना बनानी चाहिए ।
लेकिन, जैसा कि सवाल बताता है (अविश्वास में), 64-बिट मशीनों पर पूर्णांक डेटा प्रकारों के आकार के लिए अलग-अलग प्रणालियां हैं। इस्की आद्त डाल लो; दुनिया बदलने वाली नहीं है।