Проверьте, инициализирована ли переменная time_t

  • Как проверить, инициализирована ли переменная time_t?
  • Если я хочу вычислить разницу двух переменных time_t с помощью функции difftime, нужно ли мне выполнять какие-либо проверки работоспособности перед вызовом?
  • Кроме того, так как возвращаемое значение difftime является двойным, как я могу проверить, что это значение больше 0.0?

Спасибо

2 ответа

Как проверить, инициализирована ли переменная time_t?

Там действительно нет способа проверить, была ли она инициализирована. Если он не был инициализирован, это может быть любое случайное значение, которое случайно находилось в ячейке памяти. Вы должны программировать таким образом, чтобы вы знали, что он инициализирован.

Если я хочу вычислить разницу двух переменных time_t с помощью функции difftime, нужно ли мне выполнять какие-либо проверки работоспособности перед вызовом?

Я так не думаю. Поскольку time_t является целочисленным типом, он всегда находится в допустимом состоянии (целые числа не имеют состояний nan или inf, таких как числа с плавающей запятой), поэтому я не вижу причин, по которым вы могли бы получить недопустимый вывод. Я думаю, вы могли бы проверить, что значения time_t имеют смысл, учитывая контекст пролубема, который вы решаете. Например, не имеет смысла ссылаться на время 2000 лет назад.

Кроме того, так как возвращаемое значение difftime является двойным, как я могу проверить, что это значение больше 0.0?

Используйте оператор if. if(dt > 0.0) {...}

ПРОЧИТАЙТЕ ЭТО: cppreference страница на time_t

Очень полезная информация, поскольку cppreference также охватывает C.

  1. В принципе, time_t часто реализуется как 64-разрядное целое число. Что означает, что инициализация по умолчанию такая же для time_t как для старого int, Вам не нужно "инициализировать" его, чтобы сохранить в нем значения.

  2. Как всегда в C, вы не можете действительно проверить, не сделали ли вы какую-то неправильную операцию с целочисленным значением, которое устанавливает его на что-то практически неиспользуемое, но все еще допустимое - то есть нет, просто убедитесь, что никакие переменные не были инициализированы.

  3. с difftime > 0, Почему бы это не сработало? double может точно представлять целочисленные значения до ~100 000 000 000 000. Это разница во времени в 3 миллиона лет.

Другие вопросы по тегам