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 (Multi-Level Intermediate Representation) کامپایل شود، نقش متمایزتری ایفا کند.
میتوانید لیترالهای عدد صحیح را به هر یک از شکلهای نشاندادهشده در جدول زیر بنویسید.
توجه کنید که لیترالهای عددی که میتوانند از چند نوع عددی باشند، اجازه میدهند با یک پسوند نوع، مانند 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 پیدا کنید.