Tôi cố gắng để chạy các đoạn mã sau:C- Vòng lặp while hành vi bỏ giải thích
#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;
}
}
}
Tôi đang mong đợi nó để in "3 giây lên" sau mỗi 3 giây, nhưng nó không hiển thị mà thông điệp. Tôi đã cố gắng để gỡ lỗi nó bằng cách sử dụng gdb nhưng không có gì có vẻ sai và vẫn không có đầu ra. Trong khi cố gắng gỡ lỗi, tôi đã thêm một tuyên bố printf và kỳ diệu đầu ra có thể được nhìn thấy.
Nếu tôi chạy chương trình sau khi xóa // printf ("% d \ n", ms-oldms); tuyên bố, không có đầu ra một lần nữa.Tôi không chắc chắn những gì đang xảy ra và cho dù phụ thuộc vào bất cứ điều gì.
$ gcc --version gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2
Hãy thử đặt một dòng mới trên printf của bạn – Jorgel
@Jorgel, đặt một dòng mới trong printf làm việc. Nhưng, tôi vẫn còn bối rối về hành vi này. Đây là lần đầu tiên tôi gặp phải điều này. – kid
Bạn có vòng lặp vô hạn - đó là "lần đầu tiên". Ngay cả khi không có newline nó sẽ làm việc OK nếu bạn thêm 'break' sau' printf'. – i486