Суффикс ULL на числовом литерале
я наткнулся на такой код:
line += addr & 0x3fULL;
очевидно, что 'U' и ' L ' не являются шестнадцатеричными цифрами. Я предполагаю, что' ULL ' в конце этого шестнадцатеричного числового литерала означает "Unsigned Long Long" - я прав? (такого рода вещи очень трудно google) если так, то это какой-то суффикс модификатор на число?
3 ответа:
С
gcc
руководство:ISO C99 поддерживает типы данных для целых чисел шириной не менее 64 бит, а в качестве расширения GCC поддерживает их в режиме C90 и в C++. Просто напишите
long long int
для целого числа со знаком, илиunsigned long long int
для целого числа без знака. Чтобы сделать целочисленную константу типаlong long int
добавить суффиксLL
целое. Чтобы сделать целочисленную константу типаunsigned long long int
добавить суффиксULL
целое.
я ставлю новый ответ, потому что я признаю, что текущие ответы не цитируют из кросс-платформенного источника. стандарт C++11 диктует, что литерал с
U
/u
иLL
/ll
суффиксы-это литерал типа:unsigned long long int
[источник]
U
/u
суффикс C / C++ для целого числа без знака.LL
/ll
суффикс C / C++ для Along long
целое число, а новый тип в C++11 и должны иметь длину не менее 64-бит.Примечания:
- ключевое слово
int
может быть опущен, если используются какие-либо модификаторы,unsigned long long
например. Так что это будет определятьone
какunsigned long long int
, и любое присвоенное ему число будетstatic_cast
доunsigned long long int
:unsigned long long one = 1;
- C++11 ознаменовал появление
auto
. Который устанавливает тип переменной в тип, назначенный ему при объявлении. Например, потому что2ULL
этоunsigned long long int
литералtwo
будет определен какunsigned long long int
:auto two = 2ULL;
- C++14 ввел порядок независимых буквенных суффиксов. Ранее
U
/u
суффикс должен был предшествовать суффиксу любого размера. Но около C++14 суффиксы принимаются в любом порядке, так что теперь это законноunsigned long long int
литерал13LLU
.