Literales y operadores
Los números enteros 1
, los de coma flotante 1.2
, los caracteres 'a'
, las
cadenas "abc"
, los valores booleanos true
y el tipo de unidad ()
se
pueden expresar utilizando literales.
Los números enteros pueden, alternativamente, expresarse usando notación
hexadecimal, octal o binaria usando estos prefijos respectivamente: 0x
,0o
o
0b
.
Los guiones bajos se pueden insertar 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
.
Necesitamos decirle al compilador el tipo de literales que usamos. Por ahora,
usaremos el sufijo u32
para indicar que el literal es un entero de 32 bits
sin signo, y el sufijo i32
para indicar que es un entero de 32 bits con
signo.
Los operadores disponibles y su precedencia en Rust son similares a otros lenguajes tipo C.
fn main() { // Adición de números enteros println!("1 + 2 = {}", 1u32 + 2); // Substracción de números enteros println!("1 - 2 = {}", 1i32 - 2); // TODO ^ Cambia `1i32` por `1u32` para ver por qué el tipo es importante // Lógica booleana println!("true AND false es {}", true && false); println!("true OR false es {}", true || false); println!("NO true is {}", !true); // Operaciones bit a bit println!("0011 AND 0101 is {:04b}", 0b0011u32 & 0b0101); println!("0011 OR 0101 is {:04b}", 0b0011u32 | 0b0101); println!("0011 XOR 0101 is {:04b}", 0b0011u32 ^ 0b0101); println!("1 << 5 es {}", 1u32 << 5); println!("0x80 >> 2 es 0x{:x}", 0x80u32 >> 2); // ¡Utiliza guiones bajos para mejorar la legibilidad! println!("Un millón se escribe así {}", 1_000_000u32); }