Второе выражение в заголовке for
является условием цикла; цикл будет продолжаться до тех пор, пока это правда. Ваше условие всегда верно, поэтому цикл никогда не завершается.
Вы можете добавить код в свой цикл, например, чтобы выйти из него. if (x == 0) break;
Однако я бы предложил изменить цикл. Ваше состояние петли очень необычно, и у большинства людей будет немного чесаться, прежде чем они поймут, что происходит. Возможно, вы можете поместить операцию чтения в тело цикла?
Как >>
работает
Для std::basic_istream
(std::cin
является одним из них), оператор >>
переопределяется для реализации извлечения отформатированных данных и предназначен для цепочки (например, cin >> a >> b >> c
). Это работает, потому что:
>>
является левоассоциативным, поэтому он группируется как ((cin >> a) >> b) >> c)
>>
возвращает ссылку на объект потока, поэтому вы можете продолжать добавлять >>
столько, сколько хотите.
Кроме того, std::basic_istream
может быть преобразовано в bool
и будет true
, если не возникло ошибок. Таким образом, ваше условие цикла всегда cin
, и, поскольку вы, вероятно, не получаете ошибок, всегда верно.