Я пытаюсь выполнить следующий код:C- пока петля не-объяснил поведение
#include <sys/time.h>
#include <stdio.h>
int main()
{
unsigned int ms, oldms = 0,dif;
struct timeval tv;
while(1)
{
gettimeofday(&tv, NULL);
ms=tv.tv_sec;
//printf("%d\n",ms-oldms);
dif=ms-oldms;
if(dif>3)
{
printf("3 seconds up");
oldms=ms;
}
}
}
Я ожидал его на печать «3 секунды до» через каждые 3 секунды, но он не показывает, что сообщение. Я попытался отладить его с помощью gdb, но ничего не кажется неправильным и до сих пор нет вывода. При попытке отладки я добавил инструкцию printf и, как ни странно, выход можно увидеть.
Если я запустил программу после удаления // printf ("% d \ n", ms-oldms); заявление, выхода нет. Я не уверен, что происходит, и зависит ли его от чего-либо.
$ НКУ --version НКУ (Ubuntu 4.8.2-19ubuntu1) 4.8.2
Попробуйте положить новой строки на вашем Printf – Jorgel
@Jorgel, помещая символ новой строки в Printf работал. Но я все еще смущен этим поведением. Это первый раз, когда я столкнулся с этим. – kid
У вас бесконечный цикл - это «первый раз». Даже без новой строки он будет работать нормально, если вы добавите 'break' после' printf'. – i486