একটি integer হলো ভগ্নাংশবিহীন একটি সংখ্যা।
Cairo-তে, ইন্টিজারের টাইপ ডিক্লারেশনটি নির্দেশ করে যে প্রোগ্রামার মান সংরক্ষণ করতে কত বিট ব্যবহার করতে পারবেন।
আনসাইনড ইন্টিজার কেবল ধনাত্মক সংখ্যা এবং ০ (শূন্য) উপস্থাপন করতে পারে, যা কিছু নির্দিষ্ট প্রোগ্রামিং প্রসঙ্গে উপকারী হতে পারে, যেমন অ্যারে ইনডেক্সিং এবং মেমরি ম্যানেজমেন্ট।
Cairo সাইনড ইন্টিজারের জন্য সহায়তাও দেয়, যার শুরু হয় i প্রিফিক্স দিয়ে।
এই ইন্টিজারগুলো ধনাত্মক ও ঋণাত্মক উভয় মানই উপস্থাপন করতে পারে, যার আকার i8 থেকে i128 পর্যন্ত।
প্রতিটি সাইনড ভ্যারিয়েন্ট $-2^{n-1}$ থেকে $2^{n-1} - 1$ পর্যন্ত সহ সংখ্যা সংরক্ষণ করতে পারে, যেখানে $n$ হলো সেই ভ্যারিয়েন্টের ব্যবহৃত বিটের সংখ্যা।
উদাহরণস্বরূপ, একটি i8 $-2^7$ থেকে $2^7 - 1$ পর্যন্ত সংখ্যা সংরক্ষণ করতে পারে, যা $-128$ থেকে $127$-এর সমান।
| দৈর্ঘ্য | আনসাইনড | সাইনড |
|---|---|---|
| ৮-বিট | u8 | i8 |
| ১৬-বিট | u16 | i16 |
| ৩২-বিট | u32 | i32 |
| ৬৪-বিট | u64 | i64 |
| ১২৮-বিট | u128 | i128 |
| ২৫৬-বিট | 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-এ পাওয়া যাবে।