النوع integer هو عدد بلا جزء كسري.
في Cairo، يحدد تعريف نوع الأعداد الصحيحة عدد البتات التي يمكن للمبرمج استخدامها لتخزين القيمة.
الأعداد الصحيحة بدون إشارة لا تمثّل إلا الأعداد الموجبة والعدد 0 (صفر)، وقد يكون ذلك مفيدًا في سياقات برمجية معينة، مثل الفهرسة في المصفوفات وإدارة الذاكرة.
كما يدعم Cairo الأعداد الصحيحة بإشارة، التي يبدأ نوعها بالبادئة i.
يمكن لهذه الأعداد تمثيل القيم الموجبة والسالبة معًا، بأحجام تتراوح من i8 إلى i128.
يمكن لكل صيغة بإشارة أن تخزّن أعدادًا من $-2^{n-1}$ إلى $2^{n-1} - 1$ ضمنا، حيث $n$ عدد البتات التي تستخدمها تلك الصيغة.
على سبيل المثال، يمكن للنوع i8 أن يخزّن أعدادًا من $-2^7$ إلى $2^7 - 1$، أي ما يعادل $-128$ إلى $127$.
| Length | Unsigned | Signed |
|---|---|---|
| 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.