cuốn sách gpt4 ai đã làm

linux - gettimeofday() đôi khi trả về giá trị âm

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 11:05:04 25 4
mua khóa gpt4 Nike

Đối với đoạn mã sau, đôi khi tôi nhận được các giá trị âm. Tôi không hiểu nó. Bất cứ ai có thể giải thích tại sao điều này xảy ra.

int64_t gettimelocal()
{
cấu trúc thời gian Thời gian;
if(-1 == gettimeofday(&Time,NULL))
{
perror("gettimeofday");
}
// lấy thời gian tính bằng micro giây
return ((Time.tv_sec * 1000000) + Time.tc_usec);
}

câu trả lời hay nhất

Để đảm bảo an toàn bạn nên khởi tạoThời gian. khithời gian trong ngày Khi thất bại, bạn nênlỗi lầm Trở lại sau. Vì vậy hãy thử:

int64_t gettimelocal() {
cấu trúc thời gian Thời gian = {0,0};
if(-1 == gettimeofday(&Time,NULL)) {
perror("gettimeofday");
return -1;
}
// lấy thời gian tính bằng micro giây
return (((int64_t)Time.tv_sec * 1000000) + Time.tv_usec);
}

Cuối cùng, bạn có chắc chắn phép nhân sẽ không bị tràn không? Bạn cần truyền để đảm bảo phép nhân được thực hiện trong 64 bit.

Trong thực tế, tôi khuyên bạn nên sử dụng gấp đôi float clock_gettime(3)Như thế này:

nội tuyến tĩnh gấp đôi my_clock_time (clockid_t cid) {
struct timespec ts = { 0, 0 };
if (clock_gettime (cid, &ts))
trả về NAN;
khác
return (gấp đôi) ts.tv_sec + 1.0e-9 * ts.tv_nsec;
}

và sau đó gọimy_clock_time(CLOCK_REALTIME)

 printf ("bây giờ %.5f\n", my_clock_time(CLOCK_REALTIME));

Đọc kỹ thời gian(7) .Đừng mong đợi độ chính xác nano giây!

Biên dịch mã của bạn với tất cả thông tin cảnh báo và gỡ lỗi (ví dụ: gcc -Tường -g). Sử dụng trình gỡ lỗi (gdb), và có lẽ cũng sử dụng dấu vết(1)

Về linux - gettimeofday() đôi khi trả về giá trị âm, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/25605029/

25 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress