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