Curso de Raku / Avanzado / Más sobre los tipos integrados / Tipos nativos
Tipos con tamaño y desbordamiento
Además del simple int, Raku tiene enteros con un ancho
de bits fijo: int8, int16, int32,
int64, y sus equivalentes sin signo uint8,
uint16, uint32, uint64. El número
indica cuántos bits ocupa el valor.
Un ancho fijo significa un rango fijo. Un int8 contiene
valores de -128 a 127; un uint8
contiene de 0 a 255. Como el almacenamiento no
puede crecer, sobrepasar el límite superior provoca que el valor vuelva
al inicio — esto es el desbordamiento (overflow):
my int8 $i = 127;
$i++;
say $i; # -128Sumar uno al mayor int8 no produce 128 (que
no cabría); se envuelve al valor más pequeño, -128. Los
tipos sin signo también se desbordan:
my uint8 $u = 255;
$u++;
say $u; # 0Esto es lo contrario de un Int normal, que simplemente
crece tanto como sea necesario y nunca se desborda. Esta compensación es
precisamente la razón de ser de los nativos con tamaño definido: aceptas
un rango fijo a cambio de un almacenamiento predecible, compacto y
rápido.
Usa un tipo nativo con tamaño cuando conozcas el rango de tus datos y
quieras eficiencia — por ejemplo, bytes de datos binarios en un array
uint8. Para aritmética ordinaria donde los números pueden
crecer sin límite, usa Int.
Práctica
Resuelve 1 cuestionario sobre el contenido de este tema.
Navegación del curso
← Quiz — Tipos nativos | Quiz — Desbordamiento →
💪 O ve directamente a los ejercicios de esta
sección.