Curso de Raku / Avanzado / Más sobre los tipos integrados / Tipos nativos / Exercises / Desbordamiento cíclico
Solución: Desbordamiento cíclico
Aquí tienes una de las posibles soluciones:
Código
my uint8 $u = 250;
$u += 10;
say $u;
my uint8 $v = 0;
$v--;
say $v;🦋 Encuentra el programa en el archivo wrap-around.raku.
Salida
4
255Comentarios
Un
uint8va de0a255, lo cual son 256 valores distintos. La aritmética sobre él se realiza efectivamente módulo 256.250 + 10sería260, que no cabe. Se desborda, aterrizando en260 - 256 = 4pasado el límite inferior. Así que el desbordamiento no se limita a pasar del tope por uno — cualquier resultado fuera del rango se pliega de vuelta.En la otra dirección también se desborda: decrementar
0no puede dar-1en un tipo sin signo, así que se envuelve al máximo,255.