सी या सी ++ में, चार अलग-अलग डेटाटाइप हैं, जिनका उपयोग पूर्णांक प्रकार के डेटा के लिए किया जाता है। ये चार डेटाटाइप शॉर्ट, इंट, लॉन्ग और लॉन्ग लॉन्ग हैं। इनमें से प्रत्येक डेटाटाइप अलग-अलग मेमोरी स्पेस लेता है। आकार विभिन्न वास्तुकला और विभिन्न ऑपरेटिंग सिस्टम में भिन्न होता है। कभी-कभी इंट 4-बाइट लेता है या कभी-कभी 2-बाइट लेता है। यह संकलक के लिए भी होता है। इसलिए हम क्रॉस कंपाइलर का उपयोग कर सकते हैं।
क्रॉस कंपाइलर मूल रूप से एक कंपाइलर होते हैं, जो मौजूदा प्लेटफॉर्म के अलावा किसी अन्य प्लेटफॉर्म के लिए कंपाइल करने में सक्षम होते हैं।
इसलिए यदि हम निम्नलिखित कोड को 32 बिट सिस्टम और 64-बिट सिस्टम में संकलित करना चाहते हैं, तो यह विभिन्न आउटपुट उत्पन्न करेगा।
उदाहरण
#include<stdio.h> int main() { printf("Size of int : %ld Bytes\n", sizeof(int)); printf("Size of long : %ld Bytes\n", sizeof(long)); printf("Size of long long : %ld Bytes", sizeof(long long)); }
आउटपुट
Size of int : 4 Bytes Size of long : 4 Bytes Size of long long : 8 Bytes
तो इस उदाहरण से हम आसानी से समझ सकते हैं कि लंबी डेटाटाइप कंपाइलर से भिन्न होती है। तो इसके पीछे क्या कारण है?
मेमोरी एड्रेस रजिस्टर (MAR) का पता प्रदान करके CPU प्राथमिक मेमोरी (RAM) से डेटा कॉल करता है। लोकेशन मिलने पर उसे मेमोरी बफर रजिस्टर (एमबीआर) में ट्रांसफर कर दिया जाता है। डेटा को आगे के उपयोग के लिए सीपीयू रजिस्टर में संग्रहीत किया जाता है। तो डेटा बस का आकार CPU रजिस्टर का आकार निर्धारित करता है। 32-बिट सिस्टम के लिए, यह एक बार में केवल 4-बाइट डेटा को कॉल कर सकता है। यदि डेटा 32 बिट से बड़ा है, तो इसमें दो चक्र लगेंगे। तो छोटे डेटा के लिए इससे कोई फर्क नहीं पड़ता।