Cursus Raku / Geavanceerd / Meer over ingebouwde types / Native typen / Exercises / Rondom wikkelen
Oplossing: Rondom wikkelen
Hier is een mogelijke oplossing voor de opgave.
Code
my uint8 $u = 250;
$u += 10;
say $u;
my uint8 $v = 0;
$v--;
say $v;🦋 Je kunt de broncode vinden in het bestand wrap-around.raku.
Uitvoer
4
255Opmerkingen
Een
uint8heeft een bereik van0tot255, dat zijn 256 verschillende waarden. Rekenkundige bewerkingen erop worden effectief modulo 256 uitgevoerd.250 + 10zou260zijn, wat niet past. Het wrapt terug en komt uit op260 - 256 = 4voorbij de onderkant. Overflow is dus niet beperkt tot het overschrijden van de bovenkant met een — elk resultaat buiten het bereik wordt teruggevouwen.De andere kant op overflowt ook: het verlagen van
0kan geen-1opleveren bij een unsigned type, dus het wrapt naar het maximum,255.