Здравствуйте, Евгений Музыченко, Вы писали:
N>>Именно в struct tm можно было бы хранить и без знака, но зачем, если там значения гарантированно меньше соответствующего максимума даже в исходной 16-битке?
ЕМ>Да просто затем, что эти значения по своей сути не имеют знака.
И ещё раз намекну на диапазоны значений.
Пусть есть два типа, оба из которых могут использоваться для машинного представления, а целевой диапазон приложения — от 1 до 31 (mday_t).
У первого типа диапазон значений -32768..32767, у второго 0..65535.
Почему для тебя беззнаковость номера дня важнее остальных факторов?
N>>Но, как только начинается вопрос про то, что даты надо вычитать, уже приходится переводить к знаку (об этом тебе уже написали рядом). Ну и зачем эти лишние конверсии?
ЕМ>А если даты нужно делить, чтобы, например, вычислить среднее количество дней, которое занимали некие процессы? Давайте уж сразу хранить их в double, сэкономим на конверсиях.
И это вполне возможно. Юлианский день, в плавучке — достаточно точный метод задания времени. Но тут начинаются проблемы округления, это уже неудобно. Вот unixtime в микросекундах со знаком — достаточно дёшево и защищено от подобных проблем.