Переполнение: +, +% и +|
Математика с остановкой, циклическим переходом и насыщением.
«Переполнение: +, +% и +|» — бесплатный урок Zig Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Zig Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Zig Academy содержит 4 уроков всего.
Части этого урока еще не переведены и отображаются на английском.
Numbers Have Limits
Every sized integer has a maximum it can hold. Push past it and you hit overflow, the moment a value tries to grow beyond its range.
Zig Catches Overflow
By default, the plain + operator traps overflow. In a safe build, going past the limit stops your program instead of corrupting the value.
var x: u8 = 255;
x = x + 1; // panics: overflowWhy Trapping Helps
A loud crash beats a silent wrong answer. Trapping turns a sneaky bug into an obvious failure you can find and fix fast.
Wrapping Math with +%
Sometimes you want the value to roll over on purpose. The +% operator wraps around, so 255 + 1 in a u8 becomes 0.
var x: u8 = 255;
x = x +% 1; // 0When Wrapping Is Right
Wrapping shines for counters, hashes, and checksums where roll-over is the intended behavior. You ask for it with the % suffix, never by accident.
Saturating Math with +|
The +| operator clamps to the limit instead of wrapping. A u8 at 255 stays 255, perfect for values that must not exceed a ceiling.
var x: u8 = 255;
x = x +| 1; // 255Three Choices, One Decision
So + traps, +% wraps, and +| saturates. You pick the behavior that matches your intent, making overflow handling explicit in your code.
The Same Trio for Subtraction
These suffixes are not just for addition. -, -%, and -| give you trapping, wrapping, and saturating subtraction the very same way.
var x: u8 = 0;
x = x -| 1; // 0And for Multiplication
Multiplication follows the pattern too: *, *%, and *|. The single rule, choose your overflow behavior, applies across the arithmetic operators.
const big = a *% b; // wrap on overflowDefault Builds Stay Safe
In Debug and ReleaseSafe modes, plain operators check for overflow. You only opt out where you have a real reason to wrap or saturate.
Intent Lives in the Code
Because each behavior has its own symbol, a reader sees your overflow intent at a glance. Nothing is assumed; the operator spells it out.
Quick Check
You want a u8 counter to roll over from 255 back to 0. Which operator?
Recap: Pick Your Overflow
Plain math traps, the % suffix wraps, and the | suffix saturates. Choose deliberately, and overflow is never a hidden surprise. 🛡️
Часто задаваемые вопросы
Урок «Переполнение: +, +% и +|» бесплатный?
Да — полный текст урока «Переполнение: +, +% и +|» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Zig Academy, подпишись на CoddyKit PRO. Курс Zig Academy содержит 4 уроков всего.
Чему я научусь в уроке «Переполнение: +, +% и +|»?
Математика с остановкой, циклическим переходом и насыщением. Ты практикуешь Zig Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Zig Academy?
Предыдущий опыт не требуется. Zig Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Переполнение: +, +% и +|»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Zig Academy?
Да. Каждый урок Zig Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Арифметические операторы и операторы сравнения
- Переполнение: +, +% и +|
- Побитовые операторы
- Логика булевых значений и короткое вычисление