Sto cercando di eseguire il codice seguente:C- ciclo while non-ha spiegato il comportamento
#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;
}
}
}
mi aspetto per stampare "3 secondi up" dopo ogni 3 secondi, ma non visualizza che Messaggio. Ho provato a eseguirne il debug usando gdb ma non sembra nulla di sbagliato e ancora nessun output. Durante il tentativo di eseguire il debug, ho aggiunto una dichiarazione printf e magicamente è possibile vedere l'output.
Se eseguo il programma dopo aver rimosso // printf ("% d \ n", ms-oldms); dichiarazione, non c'è ancora uscita. Non sono sicuro di cosa sta succedendo e se dipende da qualcosa.
$ gcc --version gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2
Prova a mettere una nuova riga sul vostro printf – Jorgel
@Jorgel, mettendo un ritorno a capo in printf funzionato. Ma, sono ancora confuso su questo comportamento. Questa è la prima volta che ho incontrato questo. – kid
Hai un loop infinito - questa è la "prima volta". Anche senza newline funzionerà OK se aggiungi 'break' dopo' printf'. – i486