integer एक ऐसी संख्या है जिसमें दशमलव वाला कोई भाग नहीं होता।
Cairo में पूर्णांक के टाइप की घोषणा यह बताती है कि प्रोग्रामर उस वैल्यू को संग्रहीत करने के लिए कितने बिट्स इस्तेमाल कर सकता है।
अनसाइंड पूर्णांक सिर्फ धनात्मक संख्याएँ और संख्या 0 (शून्य) दर्शा सकते हैं, जो कुछ खास प्रोग्रामिंग स्थितियों में फायदेमंद होता है, जैसे ऐरे की इंडेक्सिंग और मेमोरी प्रबंधन।
Cairo साइंड पूर्णांक का भी समर्थन करता है, जिनका नाम i उपसर्ग से शुरू होता है।
ये पूर्णांक धनात्मक और ऋणात्मक, दोनों तरह की वैल्यू दर्शा सकते हैं, और इनके आकार i8 से i128 तक होते हैं।
हर साइंड रूप $-2^{n-1}$ से $2^{n-1} - 1$ तक की संख्याएँ संग्रहीत कर सकता है, जहाँ $n$ उस रूप में इस्तेमाल होने वाले बिट्स की संख्या है।
उदाहरण के लिए, एक i8 $-2^7$ से $2^7 - 1$ तक की संख्याएँ संग्रहीत कर सकता है, यानी $-128$ से $127$ तक।
| लंबाई | अनसाइंड | साइंड |
|---|---|---|
| 8-बिट | u8 | i8 |
| 16-बिट | u16 | i16 |
| 32-बिट | u32 | i32 |
| 64-बिट | u64 | i64 |
| 128-बिट | u128 | i128 |
| 256-बिट | u256 | ------ |
एक खास पूर्णांक टाइप भी है जिसे usize कहते हैं, और फिलहाल यह सिर्फ u32 का उपनाम है।
आगे चलकर, जब Cairo को MLIR (मल्टी-लेवल इंटरमीडिएट रिप्रेजेंटेशन) में कंपाइल किया जा सकेगा, तब यह टाइप शायद और अलग भूमिका निभाएगा।
आप पूर्णांक लिटरल नीचे दी गई तालिका में दिखाए गए किसी भी रूप में लिख सकते हैं।
ध्यान दीजिए कि जो संख्या लिटरल एक से ज़्यादा न्यूमेरिक टाइप के हो सकते हैं, उनमें टाइप बताने के लिए 57_u8 जैसा टाइप सफिक्स लगाया जा सकता है।
कोड की पठनीयता बढ़ाने के लिए संख्या लिटरल में _ जैसा दिखने वाला सेपरेटर भी इस्तेमाल किया जा सकता है।
| संख्या लिटरल | उदाहरण |
|---|---|
| दशमलव | 98222 |
| हेक्स | 0xff |
| ऑक्टल | 0o04321 |
| बाइनरी | 0b01 |
तो आपको कैसे पता चलेगा कि कौन-सा पूर्णांक टाइप इस्तेमाल करना है?
अंदाज़ा लगाइए कि आपके पूर्णांक की अधिकतम वैल्यू कितनी हो सकती है, और उसी के हिसाब से उचित आकार चुनिए।
usize इस्तेमाल करने की मुख्य स्थिति तब होती है जब आप किसी संग्रह को इंडेक्स कर रहे हों।
Cairo सभी पूर्णांक टाइप के लिए वे आधारभूत गणितीय संक्रियाएँ देता है जिनकी आप उम्मीद करेंगे: जोड़, घटाव, गुणा, भाग और शेष।
पूर्णांक का भाग करने पर नतीजा शून्य की ओर निकटतम पूर्णांक तक काट दिया जाता है।
नीचे दिया गया कोड दिखाता है कि let स्टेटमेंट में हर संख्यात्मक संक्रिया कैसे इस्तेमाल की जाती है:
fn main() {
// addition
let sum = 5_u128 + 10_u128;
// subtraction
let difference = 95_u128 - 4_u128;
// multiplication
let product = 4_u128 * 30_u128;
// division
let quotient = 56_u128 / 32_u128; // result is 1
let quotient = 64_u128 / 32_u128; // result is 2
// remainder
let remainder = 43_u128 % 5_u128; // result is 3
}
इन स्टेटमेंट में हर एक्सप्रेशन एक गणितीय ऑपरेटर इस्तेमाल करता है और एक ही वैल्यू निकालता है, जिसे फिर एक वेरिएबल को असाइन कर दिया जाता है।
Cairo जो सारे ऑपरेटर देता है, उनकी सूची The Cairo Book में मिलती है।