Поддерживается ли поддержка 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

Ответ 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, объявленных ранее.