ich den folgenden Code auszuführen versuchen:C- while-Schleife un erläuterte Verhalten
#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;
}
}
}
Ich erwarte es „3 Sekunden bis“ nach all 3 Sekunden zu drucken, aber es wird nicht angezeigt, dass Botschaft. Ich habe versucht, es mit gdb zu debuggen, aber nichts scheint falsch und immer noch keine Ausgabe. Während ich versuchte zu debuggen, fügte ich eine printf-Anweisung hinzu und magisch die Ausgabe zu sehen.
Wenn ich das Programm nach dem Entfernen der // printf ausführen ("% d \ n", ms-oldms); Aussage, es gibt keine Ausgabe wieder. Ich bin mir nicht sicher, was passiert und ob es von irgendetwas abhängt.
$ gcc --version gcc (Ubuntu 4.8.2-19ubuntu1) ist 4.8.2
Versuchen Sie eine neue Zeile auf dem printf – Jorgel
@Jorgel setzen, eine neue Zeile in printf gearbeitet setzen. Aber ich bin immer noch verwirrt über dieses Verhalten. Dies ist das erste Mal, dass ich diesem begegnet bin. – kid
Sie haben Endlosschleife - das ist das "erste Mal". Auch ohne Newline funktioniert es OK, wenn Sie 'break' nach' printf' hinzufügen. – i486