int main()
{
int i=3;
while(i--)
cout << i << " ";
system("pause");
return 0;
}
Результат:
2 1 0
Почему бы и нет: 2 1 0 -1 -2 -3 … (цикл)?
Причина, по которой он не выводит то, что вы ожидаете, заключается в том, что волшебство 0
0 в C ++ и большинстве других языков оценивается как логическое false. Все остальные числа верны. В этом случае вы используете значение i
как ваше состояние цикла, так, когда i == 0
цикл останавливается, и программа продолжается.
Как только i
уменьшает до нуля, i--
ложно, поэтому while
останавливается.
Почему бы и нет: 2 1 0 -1 -2 -3 … (цикл)?
Цикл прерывается, когда выражение в условном выражении становится ложным. Это происходит, когда значение i
это ноль.
int main()
{
int i=3;
while(i--)
cout << i << " ";
system("pause");
return 0;
}
однажды i
Хит 0, это больше не правда, поэтому он завершит цикл.
while( true )
{
--i;
}
было бы лучше здесь.
При использовании цикла while, 1
средства true
а также 0
средства false
,
Так что в вашем случае, как i
уменьшается на каждой итерации в цикле, в какой-то момент, i
становится 0
,
который false
и цикл подходит к концу.