Курс по Raku / Напреднали / Повече за вградените типове / Нативни типове 🆕 / Exercises / Обвиване

Решение: Обвиване

Ето едно възможно решение на задачата.

Код

my uint8 $u = 250;
$u += 10;
say $u;

my uint8 $v = 0;
$v--;
say $v;

🦋 Можете да намерите изходния код във файла wrap-around.raku.

Резултат

4
255

Коментари

  1. uint8 обхваща стойности от 0 до 255, което е 256 различни стойности. Аритметиката върху него ефективно се извършва по модул 256.

  2. 250 + 10 би дало 260, което не се побира. Стойността се обръща, попадайки на 260 - 256 = 4 след началото. Така че препълването не е ограничено само до преминаване на горната граница с единица — всеки резултат извън диапазона се връща обратно в него.

  3. В обратната посока също се препълва: намаляването на 0 не може да даде -1 при беззнаков тип, така че стойността се обръща до максимума, 255.

Навигация в курса

Обвиване   |   Нативен масив