Цикл for завершается, когда второе выражение равно false
или когда контекстно преобразуется в значение bool , получается false
.В C ++ 0 контекстуально преобразуется в false;все остальные целые числа преобразуются в true в контексте bool.(Спасибо MM за ссылку.)
Таким образом, в начале каждого цикла вычисляется выражение i--
.Это просто выражение, поэтому оно даст результат.Если полученный результат равен нулю, цикл завершится.Если вы раньше не видели это выражение, вот как оно работает:
- Оно уменьшает значение i и возвращает исходное значение i до его уменьшения.Таким образом, если
i
было 5, оценка i--
будет иметь "результат" 5, но в качестве побочного эффекта i
будет 4 после оценки.
Общая картина: i
уменьшается на 1 каждый раз, поэтому, предполагая, что он начинается с положительного значения, он опустится до 0, и тогда оценка i--
даст 0.