Если вы сделаете декремент (
--) для беззнаковой переменной, значение которой равно 0, это приведет к переполнению, и переменная примет максимальное значение, которое может быть представлено этим типом.Рассмотрим, что произойдет с переменной типа
unsigned int, если её значение равно 0 и мы применим к ней декремент:#include <iostream>
int main() {
unsigned int x = 0;
std::cout << "x before decrement: " << x << std::endl;
x--; // Декрементирование беззнаковой переменной 0
std::cout << "x after decrement: " << x << std::endl; // Переполнение
return 0;
}
Для беззнаковой переменной unsigned int: Диапазон значений: от 0 до 4294967295 (для 32-битной реализации).
Когда переменная x равна 0 и мы выполняем x--, происходит следующее:
🟠Значение 0 уменьшается на 1.
🟠Поскольку
unsigned int не может представлять отрицательные значения, происходит переполнение.🟠Переполнение для беззнакового типа приводит к "оборачиванию" значения через максимальное значение типа.
🟠Максимальное значение для
unsigned int (при 32-битной реализации) равно 4294967295.Таким образом, после выполнения
x--, значение x становится 4294967295.Результат выполнения приведенного выше кода будет следующим:
x before decrement: 0
x after decrement: 4294967295
Для беззнаковых типов в C++ (например, unsigned char, unsigned short, unsigned int, unsigned long): Если значение переменной равно 0 и к ней применяется декремент, результатом будет максимальное значение этого типа.
Ставь 👍 и забирай 📚 Базу знаний