In

Inteiros em Cairo

1 exercício

Sobre Inteiros

Um integer é um número sem parte fracionária. No Cairo, a declaração de tipo para inteiros indica o número de bits que o programador pode usar para armazenar o valor.

Os inteiros sem sinal só podem representar números positivos e o número 0 (zero), o que pode ser vantajoso em certos contextos de programação, como indexação de arrays e gerenciamento de memória.

O Cairo também oferece suporte a inteiros com sinal, que começam com o prefixo i. Esses inteiros podem representar valores positivos e negativos, com tamanhos que vão de i8 a i128. Cada variante com sinal pode armazenar números de $-2^{n-1}$ a $2^{n-1} - 1$, inclusive, em que $n$ é o número de bits que a variante usa. Por exemplo, um i8 pode armazenar números de $-2^7$ a $2^7 - 1$, o que corresponde a $-128$ até $127$.

Tamanho Sem sinal Com sinal
8 bits u8 i8
16 bits u16 i16
32 bits u32 i32
64 bits u64 i64
128 bits u128 i128
256 bits u256 ------

Existe também um tipo inteiro especial chamado usize, que atualmente é apenas um alias para u32. Esse tipo pode desempenhar um papel mais distinto no futuro, quando o Cairo puder ser compilado para MLIR (Multi-Level Intermediate Representation).

Literais inteiros no Cairo

Você pode escrever literais inteiros em qualquer uma das formas mostradas na tabela abaixo. Repare que literais numéricos que podem ser de mais de um tipo permitem um sufixo de tipo, como 57_u8, para designar o tipo. Também é possível usar um separador visual _ em literais numéricos, para melhorar a legibilidade do código.

Literais numéricos Exemplo
Decimal 98222
Hexadecimal 0xff
Octal 0o04321
Binário 0b01

Então, como você sabe qual tipo de inteiro usar? Tente estimar o valor máximo que o seu inteiro pode ter e escolha o tamanho adequado. A principal situação em que você usaria usize é ao indexar algum tipo de coleção.

Operações numéricas

O Cairo oferece as operações matemáticas básicas que você esperaria para todos os tipos de inteiros: adição, subtração, multiplicação, divisão e resto. A divisão de inteiros trunca em direção ao zero, para o inteiro mais próximo. O código a seguir mostra como você usaria cada operação numérica em uma instrução 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
}

Cada expressão nessas instruções usa um operador matemático e resulta em um único valor, que é então associado a uma variável.

A lista de todos os operadores que o Cairo oferece está em The Cairo Book.

Editar via GitHub O link abre em uma nova janela ou aba

Aprenda Inteiros

A prática está bloqueada

Desbloqueie mais 2 exercícios para praticar Inteiros