Ένας integer είναι ένας αριθμός χωρίς κλασματικό μέρος.
Στην Cairo, η δήλωση τύπου για τους ακέραιους δείχνει τον αριθμό των bit που μπορεί να χρησιμοποιήσει ο προγραμματιστής για να αποθηκεύσει την τιμή.
Οι ακέραιοι χωρίς πρόσημο μπορούν να αναπαραστήσουν μόνο θετικούς αριθμούς και τον αριθμό 0 (μηδέν), κάτι που μπορεί να είναι χρήσιμο σε ορισμένες περιπτώσεις προγραμματισμού, όπως η πρόσβαση σε θέσεις ενός πίνακα και η διαχείριση μνήμης.
Η Cairo παρέχει επίσης υποστήριξη για ακέραιους με πρόσημο, που ξεκινούν με το πρόθεμα i.
Αυτοί οι ακέραιοι μπορούν να αναπαραστήσουν και θετικές και αρνητικές τιμές, με μεγέθη που κυμαίνονται από i8 έως i128.
Κάθε παραλλαγή με πρόσημο μπορεί να αποθηκεύσει αριθμούς από $-2^{n-1}$ έως $2^{n-1} - 1$ συμπεριλαμβανομένων, όπου $n$ είναι ο αριθμός των bit που χρησιμοποιεί αυτή η παραλλαγή.
Για παράδειγμα, ένα i8 μπορεί να αποθηκεύσει αριθμούς από $-2^7$ έως $2^7 - 1$, που ισούται με $-128$ έως $127$.
| Μήκος | Χωρίς πρόσημο | Με πρόσημο |
|---|---|---|
| 8 bit | u8 | i8 |
| 16 bit | u16 | i16 |
| 32 bit | u32 | i32 |
| 64 bit | u64 | i64 |
| 128 bit | u128 | i128 |
| 256 bit | 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.