Вопрос задан 30.05.2026 в 13:47. Предмет Информатика. Спрашивает Зеленцов Егор.

Что означает `!n--` в C++? Что делает строка программы `if (!n--)`?

Пример:
```cpp
static int Sum(int n, int a = 0)
{
if (!n--)
return a;
return Sum(n, 1 + a + n);
}
```

Перейти к ответам

Ответы на вопрос

Отвечает Сафронова Лиза.

В C++ запись !n-- состоит из двух операторов: логического отрицания ! и постфиксного декремента --. Постфиксный декремент сначала возвращает текущее значение переменной n, а затем уменьшает её на 1. Поэтому выражение !n-- вычисляется так: берётся исходное значение n, к нему применяется ! (логическое НЕ), и только после этого n уменьшается.

Строка if (!n--) означает: если исходное значение n было равно нулю, то !0 даст истину, и тело if выполнится; если n было не равно нулю, условие ложно. В любом случае после проверки n уменьшится на 1.

В примере с функцией Sum это используется для рекурсивного суммирования чисел от 1 до n. Когда n доходит до 0, условие !n-- становится истинным (потому что n было 0), и функция возвращает накопленную сумму a. Иначе она вызывает себя с уменьшенным n и обновлённым a, прибавляя текущее значение n (уже после декремента) к сумме. Так постепенно складываются все числа от n до 1.

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос