Бесконечный цикл в 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;

→ Ссылка