Бесконечный цикл в c++
#include <iostream>
int main()
{
int count(0);
while (count < 10)
{
if (count == 5)
continue;
std::cout << count << " ";
++count;
}
return 0;
}
Я ожидаю, что программа прежде чем войти в бесконечный цикл выведет 1 2 3 4 , но она этого не делает. У меня сразу начинается цикл. Но если я изменю строчку std::cout << count << " "; на
std::cout << count << " " << std::endl;, то тогда будет происходить вывод 1 2 3 4 (но в столбик). Вопрос: почему в первом случае числа не выводятся ?
Ответы (1 шт):
Автор решения: gbg
→ Ссылка
Потому что cout буферизует вывод - писать числа в терминал "дорого" по времени, они попадают во временный буфер. А так как программа зацикливается, они в этом буфере остаются навечно.
endl же не только переводит строку, но и заставляет буфер сброситься.
Чтобы сбросить буфер без перевода строки, используйте cout << flush;