Какой примитивный тип данных является time_t? [дубликат]

46
задан 8 May 2010 в 01:14
поделиться

3 ответа

К сожалению, он не является полностью переносимым. Обычно это интеграл, но он может быть любым "целочисленным или вещественным плавающим типом".

28
ответ дан 26 November 2019 в 20:29
поделиться

Он специфичны для платформы. Но вы можете отлить его к известному типу.

printf("%lld\n", (long long) time(NULL));
33
ответ дан 26 November 2019 в 20:29
поделиться

Вы всегда можете использовать что-то вроде mktime чтобы создать известное время (полночь, вчера вечером) и использовать difftime, чтобы получить разницу во времени с двойной точностью между ними. Для независимого от платформы решения, если вы не углубитесь в детали своих библиотек, вы не добьетесь большего успеха. Согласно спецификации C, определение time_t определяется реализацией (это означает, что каждая реализация библиотеки может определять его так, как им нравится, пока библиотечные функции, использующие его, ведут себя в соответствии со спецификацией)

. , размер time_t на моей Linux-машине составляет 8 байтов, что предполагает длинное int или double. Итак, я сделал:

int main()
{
    for(;;)
    {
        printf ("%ld\n", time(NULL));
        printf ("%f\n", time(NULL));
        sleep(1);
    }
    return 0;
}

Время, указанное в% ld, увеличивалось на единицу на каждом шаге, и float каждый раз печатал 0,000. Если вы одержимы использованием printf для отображения time_ts, лучше всего попробовать свой собственный такой эксперимент и посмотреть, как он работает на вашей платформе и с вашим компилятором.

2
ответ дан 26 November 2019 в 20:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: