Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Operadores y Literales

Enteros 1, flotantes 1.2, caractéres 'a', cadenas "abc", booleanos true y el tipo unitario () se puede expresar con literales.

Los enteros pueden, alternativamente, expresarse utilizando notación hexadecimal, octal o binariausando estos prefijos respectivamente: 0x, 0o o 0b.

Se pueden insertar guíones bajos en literales numéricos para mejorar la legibilidad, por ejemplo,1_000 es lo mismo que 1000, y 0.000_001 es lo mismo que 0.000001.

Rust también admite notación E científica, e.g. 1e6, 7.6e-4. El tipo asociado es f64.

Necesitamos decirle al compilador el tipo de literales que usamos. Por ahora, lo haremosusando el sufijo u32 para indicar que el literal es un entero sin signo de 32 bits , y el sufijo i32 para indicar que es un entero con signo de 32 bits.

Los operadores disponibles y su precedencia en Rust es similar a otros lenguajes como C.

fn main() {
    // Suma de enteros    println!("1 + 2 = {}", 1u32 + 2);

    // Resta de enteros    println!("1 - 2 = {}", 1i32 - 2);
    // TAREA ^ Intenta cambiar `1i32` a `1u32` para ver por qué el tipo es importante

    // Notación científica    println!("1e4 es {}, -2.5e-3 es {}", 1e4, -2.5e-3);

    // Lógica booleana de corto circuito    println!("true Y false es {}", true && false);
    println!("true O false es {}", true || false);
    println!("NOT true es {}", !true);

    // Operaciones sobre bits    println!("0011 AND 0101 es {:04b}", 0b0011u32 & 0b0101);
    println!("0011 OR 0101 es {:04b}", 0b0011u32 | 0b0101);
    println!("0011 XOR 0101 es {:04b}", 0b0011u32 ^ 0b0101);
    println!("1 << 5 es {}", 1u32 << 5);
    println!("0x80 >> 2 es 0x{:x}", 0x80u32 >> 2);

    // ¡Usa guiones bajos para mejorar la legibilidad!
    println!(" Un millón se escribe como {}", 1_000_000u32);
}