Поддерживается ли поддержка GCC долгое время?
Поддерживает ли GCC:
long long int
который будет 64-битным целым?
Кроме того, является частью long long int
стандарта?
Ответы
Ответ 1
Да GCC поддерживает long long int
, который является частью стандарта C99.
Стандарт не определяет свой размер в битах, но требуемые значения LLONG_MIN
и LLONG_MAX
в <limits.h>
подразумевают, что он не менее 64-битных (точные 64-разрядные целые типы int64_t
/uint64_t
от <stdint.h>
).
-
LLONG_MIN
должно быть не более -9223372036854775807
-
LLONG_MAX
должен быть не менее 9223372036854775807
Ответ 2
long long int
является частью стандарта C99, и я знаю, что GCC поддерживает его. И теперь я могу это доказать.
Ответ 3
На моей 32-битной машине
int main()
{
printf("%d\n", sizeof(long long int));
return 0;
}
скомпилировано с gcc
печатает 8 (8 байтов * 8 бит/байт = 64 бит).
Ответ 4
Да, long long
является частью C99, а также константами long long
(10222333444555LL
) и несколькими элементами поддержки. (LLONG_MAX
, llrint(d)
, llround(d)
, некоторые другие.) И gcc реализовал его в течение некоторого времени.
Ответ 5
Чтобы напечатать длинные длинные переменные int:
long long int lli = 100000000;
printf("%lld\n", lli);
Ответ 6
долгое долгое время хорошо поддерживается и долгое время [извините]. Насколько я понимаю, это должно было быть 128 бит на 64-битных платформах, но по соображениям совместимости/переносимости в GCC стандартизировано по 64-разрядной ширине.
См. также: (u) int128_t, и это обсуждение для 128-битной поддержки GCC.
Ответ 7
Я считаю, что обычно unsigned long long
является традиционным представлением 64-битного целого числа. Я предполагаю, что long long int
тоже будет работать, но я никогда не видел никаких 64-битных vars, объявленных ранее.