Az integer olyan szám, amelynek nincs tört része.
A Cairoban az egész számok típusdeklarációja megadja, hogy a programozó hány bitet használhat az érték tárolására.
Az előjel nélküli egész számok csak pozitív számokat és a 0-t (nullát) tudják ábrázolni, ami bizonyos programozási helyzetekben előnyös lehet, például tömbindexelésnél és memóriakezelésnél.
A Cairo az előjeles egész számokat is támogatja, amelyek az i előtaggal kezdődnek.
Ezek a számok pozitív és negatív értékeket egyaránt ábrázolhatnak, méretük pedig az i8-tól az i128-ig terjed.
Minden előjeles változat a $-2^{n-1}$ és a $2^{n-1} - 1$ közötti számokat tárolhatja, a végpontokat is beleértve, ahol $n$ a változat által használt bitek száma.
Például egy i8 a $-2^7$ és a $2^7 - 1$ közötti számokat tárolhatja, ami $-128$ és $127$ közötti értéket jelent.
| Hossz | Előjel nélküli | Előjeles |
|---|---|---|
| 8 bites | u8 | i8 |
| 16 bites | u16 | i16 |
| 32 bites | u32 | i32 |
| 64 bites | u64 | i64 |
| 128 bites | u128 | i128 |
| 256 bites | u256 | ------ |
Létezik egy usize nevű különleges egész számtípus is, amely jelenleg csupán a u32 aliasa.
Ez a típus a jövőben talán önállóbb szerepet kap, ha majd a Cairo lefordítható lesz MLIR-re (Multi-Level Intermediate Representation).
Az egész szám literálokat az alábbi táblázatban látható formák bármelyikében leírhatod.
Vedd figyelembe, hogy azoknál a szám literáloknál, amelyek több numerikus típushoz is tartozhatnak, megadhatsz típusutótagot, például 57_u8, hogy jelezd a típust.
Szám literáloknál vizuális elválasztót (_) is használhatsz, hogy javítsd a kód olvashatóságát.
| Numerikus literálok | Példa |
|---|---|
| Decimális | 98222 |
| Hexadecimális | 0xff |
| Oktális | 0o04321 |
| Bináris | 0b01 |
Na de honnan tudod, melyik egész számtípust használd?
Próbáld megbecsülni, hogy legfeljebb mekkora értéket vehet fel az int, és válaszd a megfelelő méretet.
A usize-t elsősorban valamilyen gyűjtemény indexelésekor használod.
A Cairo minden egész számtípusnál támogatja azokat az alapvető matematikai műveleteket, amelyeket elvárnál: összeadás, kivonás, szorzás, osztás és maradékképzés.
Az egész osztás nullafelé csonkol a legközelebbi egész számig.
Az alábbi kód megmutatja, hogyan használnád az egyes numerikus műveleteket egy let utasításban:
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
}
Ezekben az utasításokban minden kifejezés egy matematikai operátort használ, és egyetlen értékké értékelődik ki, amelyet aztán egy változóhoz kötünk.
A Cairo összes operátorának listáját a The Cairo Book című könyvben találod.