Что означает `!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.
Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili

