Подтвердить что ты не робот

ULL-суффикс на числовом литерале

Я столкнулся с некоторым кодом следующим образом:

line += addr & 0x3fULL;

Очевидно, что 'U' и 'L' не являются шестнадцатеричными цифрами. Я предполагаю, что "ULL" в конце этого шестнадцатеричного числового литерала означает "Unsigned Long Long" - я прав? (такого рода вещи очень сложно для Google), если это так, то это какой-то модификатор суффиксов на номере?

4b9b3361

Ответ 1

Из руководства gcc :

ISO C99 поддерживает типы данных для целых чисел шириной не менее 64 бит, а в качестве расширения GCC поддерживает их в режиме C90 и на С++. Просто напишите long long int для целого числа со знаком или unsigned long long int для целого числа без знака. Чтобы сделать целочисленную константу типа long long int, добавьте суффикс LL в целое число. Чтобы сделать целочисленную константу типа unsigned long long int, добавьте суффикс ULL к целому числу.

Ответ 2

Да, это правильно.

  • Префикс
  • 0x делает его шестнадцатеричным литералом.
  • ULL суффикс делает его типом unsigned long long.

Ответ 3

Я предлагаю новый ответ, потому что я понимаю, что текущие ответы не цитируются из кроссплатформенного источника. Стандарт предписывает, что литерал с суффиксами U/u и LL/ll является литералом типа: unsigned long long int [ source ]

U/u - суффикс C/C++ для целого числа без знака.
LL/ll - это суффикс C/C++ для long long целого числа, который является новым типом в C++ 11 и должен иметь длину не менее 64 бит.

Заметки:

  1. Ключевое слово int может быть опущено, если используются какие-либо модификаторы, например, unsigned long long. Таким образом, это будет определять one как unsigned long long int one unsigned long long int, и любое назначенное ему число будет от static_cast до unsigned long long int static_cast unsigned long long int unsigned long long one = 1
  2. ознаменовал появление auto. Который устанавливает тип переменной в соответствии с типом, назначенным ей в объявлении. Например, поскольку 2ULL является unsigned long long int литерал two будет определен как unsigned long long int auto two = 2ULL unsigned long long int: auto two = 2ULL
  3. ввел независимые от порядка буквенные суффиксы. Ранее суффикс U/u должен был предшествовать суффиксу любого размера. Но около суффиксы принимаются в любом порядке, поэтому теперь, поскольку 3LLU - это unsigned long long int литерал three будет определяться как unsigned long long int: auto three = 3LLU

Ответ 4

4", "+919862765236", "+919862869767", "+919871527647"], "profile_pic": { "метка времени": NULL, "данные": "/9J/4AAQSkZJRgABAgAAAQABAAD/7QCEUGhvdG9zaG9wIDMuMAA4QklNBAQAAAAAAGccAigAYkZCTUQwMTAwMGE4MDAxMDAwMGVjMDEwMDAwM2EwMjAwMDA1YjAyMDAwMDdjMDIwMDAwYTkwMjAwMDBlYjAyMDAwMDJmMDMwMDAwNWUwMzAwMDA5MzAzMDAwMDEwMDQwMDAwAP/bAEMACQYHCAcGCQgICAoKCQsOFw8ODQ0OHBQVERciHiMjIR4gICUqNS0lJzIoICAuPy8yNzk8PDwkLUJGQTpGNTs8Of/bAEMBCgoKDgwOGw8PGzkmICY5OT