En

Entiers en Cairo

1 exercice

À propos de Entiers

Un integer est un nombre sans partie fractionnaire. En Cairo, la déclaration de type pour les entiers indique le nombre de bits que le programmeur peut utiliser pour stocker la valeur.

Les entiers non signés ne peuvent représenter que des nombres positifs et le nombre 0 (zéro), ce qui peut être avantageux dans certains contextes de programmation, comme l'indexation de tableaux et la gestion de la mémoire.

Cairo prend également en charge les entiers signés, qui commencent par le préfixe i. Ces entiers peuvent représenter à la fois des valeurs positives et négatives, avec des tailles allant de i8 à i128. Chaque variante signée peut stocker des nombres allant de $-2^{n-1}$ à $2^{n-1} - 1$ inclus, où $n$ est le nombre de bits que cette variante utilise. Par exemple, un i8 peut stocker des nombres de $-2^7$ à $2^7 - 1$, ce qui correspond à des valeurs allant de $-128$ à $127$.

Taille Non signé Signé
8 bits u8 i8
16 bits u16 i16
32 bits u32 i32
64 bits u64 i64
128 bits u128 i128
256 bits u256 ------

Il existe aussi un type entier spécial appelé usize, qui n'est actuellement qu'un alias de u32. Ce type pourrait jouer un rôle plus distinct à l'avenir, une fois que Cairo pourra être compilé en MLIR (représentation intermédiaire multi-niveaux).

Littéraux entiers en Cairo

Tu peux écrire des littéraux entiers sous n'importe laquelle des formes présentées dans le tableau ci-dessous. Note que les littéraux numériques qui peuvent appartenir à plusieurs types numériques acceptent un suffixe de type, comme 57_u8, pour désigner le type. Il est également possible d'utiliser un séparateur visuel _ dans les littéraux numériques, afin d'améliorer la lisibilité du code.

Littéraux numériques Exemple
Décimal 98222
Hexadécimal 0xff
Octal 0o04321
Binaire 0b01

Alors, comment savoir quel type d'entier utiliser ? Essaie d'estimer la valeur maximale que ton entier peut atteindre et choisis la taille appropriée. La principale situation dans laquelle tu utiliserais usize est l'indexation d'une collection quelconque.

Opérations numériques

Cairo prend en charge les opérations mathématiques de base que l'on attend de tous les types entiers : l'addition, la soustraction, la multiplication, la division et le reste. La division entière tronque vers zéro, à l'entier le plus proche. Le code suivant montre comment utiliser chaque opération numérique dans une instruction 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
}

Chaque expression dans ces instructions utilise un opérateur mathématique et s'évalue en une seule valeur, qui est ensuite liée à une variable.

La liste de tous les opérateurs que Cairo fournit se trouve dans The Cairo Book.

Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet

Apprends Entiers

L'entraînement est verrouillé

Déverrouille 2 exercices de plus pour t'entraîner sur Entiers