#define TIMEFIXCONST 11644473600
Любое использование макроса TIMEFIXCONST
расширяется во время компиляции до константы 11644473600
. Он нигде не хранится, пока вы его не сохраните.
Десятичная целочисленная константа имеет тип int
, long int
или long long int
, в зависимости от значения константы и диапазонов типов (это первый из тех типов, который достаточно широк, чтобы содержать значение ). Нет необходимости добавлять суффикс L
или LL
, если вы не хотите явно указывать тип. Даже тогда 11644473600L
может иметь тип long long
, а не long
.
(В C89 / C90 он имеет тип int
, long int
или unsigned long int
, но если unsigned long int
только 32 бита, сама константа является ошибкой.)
Поскольку для 11644473600
требуется не менее 34 бит (плюс знаковый бит, если есть), он, вероятно, имеет тип long
, если long
равен 64 битам, или long long
в противном случае.
Если вы присвоите это значение переменной int
:
int n = TIMEFIXCONST;
будет преобразовано в int
, а результат будет определен реализацией. Вы вероятно получите предупреждение во время компиляции; если вы этого не сделаете, узнайте, как включить больше предупреждений в вашем компиляторе.