Почему этот код не зацикливается (пока)?

int main()
{
int i=3;
while(i--)
cout << i << " ";
system("pause");
return 0;
}

Результат:
2 1 0

Почему бы и нет: 2 1 0 -1 -2 -3 … (цикл)?

-10

Решение

Причина, по которой он не выводит то, что вы ожидаете, заключается в том, что волшебство 0

0 в C ++ и большинстве других языков оценивается как логическое false. Все остальные числа верны. В этом случае вы используете значение i как ваше состояние цикла, так, когда i == 0цикл останавливается, и программа продолжается.

1

Другие решения

Как только i уменьшает до нуля, i-- ложно, поэтому while останавливается.

0

Почему бы и нет: 2 1 0 -1 -2 -3 … (цикл)?

Цикл прерывается, когда выражение в условном выражении становится ложным. Это происходит, когда значение i это ноль.

0

int main()
{
int i=3;
while(i--)
cout << i << " ";
system("pause");
return 0;
}

однажды i Хит 0, это больше не правда, поэтому он завершит цикл.

while( true )
{
--i;
}

было бы лучше здесь.

0

При использовании цикла while, 1 средства true а также 0 средства false,

Так что в вашем случае, как i уменьшается на каждой итерации в цикле, в какой-то момент, i становится 0,
который false и цикл подходит к концу.

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector