Corso di Raku / Avanzato / Altro sui tipi predefiniti / Tipi nativi / Exercises / Wrap around
Soluzione: Wrap around
Ecco una possibile soluzione.
Codice
my uint8 $u = 250;
$u += 10;
say $u;
my uint8 $v = 0;
$v--;
say $v;🦋 Puoi trovare il codice sorgente nel file wrap-around.raku.
Output
4
255Commenti
Un
uint8va da0a255, ovvero 256 valori distinti. L’aritmetica su di esso viene effettivamente eseguita modulo 256.250 + 10darebbe260, che non ci sta. Si riavvolge, arrivando a260 - 256 = 4oltre il fondo. Quindi l’overflow non si limita a superare il massimo di uno — qualsiasi risultato fuori dall’intervallo viene ripiegato all’interno.Andando nell’altra direzione si ha ugualmente overflow: decrementare
0non può dare-1in un tipo senza segno, quindi si riavvolge al massimo,255.
Navigazione del corso
← Wrap around | Un array nativo →