2011-12-19 5 views
12

Можно создать дубликат:
How to measure time in milliseconds using ANSI C?
How can I get the Windows system time with millisecond resolution?Как получить текущее время в миллисекундах программирования C

Мы хотим, чтобы вычислить время, которое игрок принял, чтобы закончить игру , Но с time.h мы могли вычислять только за считанные секунды. но это не точно. Можно ли получить время в миллисекундах? и что такое%? распечатать?

+2

Точное дублирование http://stackoverflow.com/questions/361363/how-to-measure-time-in-milliseconds-using-ansi-c – niko

ответ

15

быстрый ответ

#include<stdio.h> 
#include<time.h> 

int main() 
{ 
    clock_t t1, t2; 
    t1 = clock(); 
    int i; 
    for(i = 0; i < 1000000; i++) 
    { 
     int x = 90; 
    } 

    t2 = clock(); 

    float diff = ((float)(t2 - t1)/1000000.0F) * 1000; 
    printf("%f",diff); 

    return 0; 
} 
+15

Я думал, что 'clock' дает время процессора, а не в реальном времени , – cnicutar

+14

Этот код, возможно, правильный для некоторых систем, не всегда будет работать. Вы должны использовать CLOCKS_PER_SEC, а не жесткий код 1000000. – jarmod

+1

@jarmod nice pickup - его необходимо специально для Windows под MS VC++, где CLOCKS_PER_SEC установлен в 1000. –

17

Нет портативного способа получить разрешение менее секунды в стандарте C. Так что вы можете сделать это, используйте функцию POSIX gettimeofday().

2

Если вы на Unix-подобных системах, использовать gettimeofday и преобразовать результат от микросекунд до миллисекунд.

Смежные вопросы