Ваш if
чек полностью неверен.Представьте, что ваш while
цикл запускается дважды и в clock()
нет изменений, потому что он работает очень быстро.Он будет либо выводить оба раза, либо не выводить ни разу.Это не может быть правдой.
Правильная проверка состоит в том, чтобы проверить, прошла ли хотя бы одна секунда с момента последнего вывода данных.
clock_t last_output;
start = last_output = clock();
while (true) {
if (clock() > (last_output + CLOCKS_PER_SEC)){
last_output += CLOCKS_PER_SEC;
cout << (clock() - start) / (double)CLOCKS_PER_SEC;
}
}
Вот полный код:
#include <time.h>
#include <iostream>
int main()
{
clock_t start, last_output;
start = last_output = clock();
while (true)
{
if (clock() > (last_output + CLOCKS_PER_SEC))
{
last_output += CLOCKS_PER_SEC;
std::cout << (clock() - start) / (double)CLOCKS_PER_SEC << std::endl;
}
}
}