6.1.2 Целые числа двойной разрядности
ISO C99 и ISO C++11 поддерживают типы данных для целых чисел шириной не менее 64 бит, а в качестве расширения GCC поддерживает их в режимах C90 и C++98. Для целого числа со знаком просто напишите long long int, а для целого числа без знака — unsigned long long int. Чтобы создать целочисленную константу типа long long int, добавьте к целому числу суффикс «LL». Чтобы создать целочисленную константу типа unsigned long
long int, добавьте к целому числу суффикс «ULL».
Эти типы можно использовать в арифметических операциях так же, как и любые другие целочисленные типы. Сложение, вычитание и побитовые логические операции с этими типами генерируются непосредственно для машин всех типов. Умножение генерируется непосредственно, если машина поддерживает инструкцию расширяющего умножения из полного машинного слова в двойное машинное слово. Деление и сдвиги генерируются непосредственно только на машинах, обеспечивающих специальную поддержку. Для операций, которые не генерируются непосредственно, используются специальные библиотечные процедуры, поставляемые вместе с GCC.
При использовании типов long long в качестве аргументов функций без прототипов могут возникнуть проблемы. Если функция ожидает аргумент типа int, а вы передаёте значение типа long long int, возникает несоответствие: вызывающая сторона и подпрограмма по-разному определяют размер аргумента в байтах. Аналогичная проблема возникает, если функция ожидает long long int, а вы передаёте int. Лучший способ избежать таких проблем — использовать прототипы.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-15.3.0/gcc/Long-Long.html