Литерал что это в программировании

Литерал (информатика)

Содержание

Описание

В следующем примере 1 и Кот это литералы, а a1, c и cat — переменные:

Типы литералов

Почти все языки программирования допускают использование литералов элементарных типов. Однако, использование различных типов литералов, а также их запись в программах отличается.

Обычно выделяют следующие элементарные типы литералов:

Числовые литералы — литералы, для записи чисел. Иногда, числовые литералы детализируются целые литералы, дробные литералы, с различной точностью представления и записанные в различной системе счисления (например, битовые литералы в PL/I). Обычно, в программах числовые литералы записываются непосредственно числом. В следующем примере 100 и 3.1415 — числовые литералы:

Строковые литералы, обычно, представляют собой строку символов, заключённую в кавычки или скобки. Иногда выделяют, также, символьные литералы, включающие один символ. В разных языках программирования допускаются различные типы кавычек. Например, в следующем примере на языке JavaScript один и два — строковые литералы записанные с использованием различных допустимых типов кавычек:

Логические литералы, Логические значения — два литерала: true и false или их аналоги — T, t, Y, y, F, f, N, n, NIL и т. п.. Например:

Литерал ссылочного типа, адрес в памяти — обычно, числовые литералы, указывающие на ячейку в памяти.

Null-литерал, Пустое значение — особый тип литерала, в зависимости от языка программирования, относящийся к ссылочному либо объектному типу. Единственное допустимое значение этого типа литералов null, или аналог, например NIL, None, Nothing — ссылка никуда не ведёт либо объект отсутствует.

Иногда анонимные функции относят к литералам-функциям, а анонимные объекты к литералам-объектам.

Источник

Числовые, логические литералы и литералы-указатели

Литерал — это элемент программы, который непосредственно представляет значение. В этой статье рассматриваются литералы типа Integer, float-Point, Boolean и Pointer. Дополнительные сведения о строковых и символьных литералах см. в разделе строковые и символьные литералы (C++). Можно также определить собственные литералы на основе любой из этих категорий. Дополнительные сведения см. в разделе определяемые пользователем литералы (C++).

Литералы можно использовать во многих контекстах, но наиболее часто они используются для инициализации именованных переменных и для передачи аргументов в функции.

Целочисленные литералы

Целочисленные литералы начинаются с цифры и не имеют дробных частей или экспонент. Целочисленные литералы можно указать в десятичной, двоичной, восьмеричной или шестнадцатеричной форме. При необходимости можно указать целочисленный литерал как неподписанный, а в качестве типа long или long — с помощью суффикса.

Если префикс или суффикс отсутствует, компилятор выдает целочисленный тип литерального значения int (32 бит), если значение подходит, в противном случае присваивает ему тип long long (64 бит).

Чтобы указать десятичный целочисленный литерал, начинайте спецификацию с любой цифры, кроме нуля. Пример:

Чтобы указать восьмеричный целочисленный литерал, начинайте спецификацию с нуля, за которым следует ряд цифр в диапазоне от 0 до 7. Цифры 8 и 9 при указании восьмеричного литерала будут ошибками. Пример:

Чтобы указать шестнадцатеричный целочисленный литерал, начните спецификацию с 0x или 0X (регистр «x не важен)», за которым следует последовательность цифр в диапазоне от 0 до 9 и a (или A ) до f (или F ). Шестнадцатеричные цифры от a (или A ) до f (или F ) представляют собой значения в диапазоне от 10 до 15. Пример:

Разделители цифр. символ одинарной кавычки (апостроф) можно использовать для разделения значений в больших числах, чтобы облегчить чтение людям. Разделители не влияют на компиляцию.

Литералы с плавающей запятой

Литералы с плавающей запятой задают значения, которые должны иметь дробную часть. Эти значения содержат десятичные разделители ( . ) и могут содержать экспоненты.

Литералы с плавающей запятой имеют значащим (иногда называется мантиссаом), который указывает значение числа. Они имеют показатель степени, который указывает величину числа. И имеют необязательный суффикс, указывающий тип литерала. Значащим указывается как последовательность цифр, за которыми следует точка, за которой следует дополнительная последовательность цифр, представляющая дробную часть числа. Пример:

Если указан показатель степени, он задает порядок числа в виде степени 10, как показано в следующем примере:

Хотя long double и double имеют одинаковое представление, они имеют разные типы. Например, можно использовать перегруженные функции, такие как

логические литералы

Литерал-указатель (C++11)

Двоичные литералы (C++14)

Двоичный литерал можно задать с помощью префикса 0B или 0b и последовательности, состоящей из 1 и 0:

Избегайте использования литералов как «магических констант»

Несмотря на то что это не всегда является хорошим стилем программирования, можно использовать литералы непосредственно в выражениях и операторах:

В предыдущем примере рекомендуется использовать именованную константу, которая передает ясное значение, например «MAXIMUM_ERROR_THRESHOLD». Если конечные пользователи видят возвращаемое значение Success, возможно, лучше использовать именованную строковую константу. Строковые константы можно хранить в одном месте в файле, который может быть локализован на другие языки. Использование именованных констант помогает обоим и другим пользователям понять смысл кода.

Источник

4.13 – Литералы

В программировании константа – это фиксированное значение, которое нельзя изменять. В C++ есть два типа констант: литеральные константы и символьные константы. В этом уроке мы рассмотрим литеральные константы, а в следующем – символьные константы.

Литеральные константы (обычно называемые просто литералами) – это значения, вставленные непосредственно в код. Например:

Они являются константами, потому что их значения не могут быть изменены динамически (сначала вы должны изменить их, а затем перекомпилировать программу, чтобы изменение вступило в силу).

Так же, как у объектов есть тип, тип есть и у всех литералов. Тип литерала предполагается из значения и формата самого литерала.

Суффиксы литералов

Если тип литерала по умолчанию не соответствует необходимому, вы можете изменить тип литерала, добавив суффикс:

Обычно вам не нужно использовать суффиксы для целочисленных типов, но вот пара примеров:

Начинающие программисты часто не понимают, почему следующий код работает не так, как ожидалось:

Литералы можно использовать в коде C++, если их значения понятны. Чаще всего это происходит при использовании для инициализации или присвоения значения переменной, выполнения математических операций или вывода текста на экран.

Строковые литералы

В уроке «4.11 – Символы» мы определили строку как набор последовательных символов. C++ поддерживает строковые литералы:

Экспоненциальная запись для числовых литералов с плавающей запятой

Есть два разных способа объявить литералы с плавающей точкой:

Во второй форме число после экспоненты может быть отрицательным:

Литералы в восьмеричной и шестнадцатеричной системах счисления

В повседневной жизни мы считаем, используя числа в десятичной системе счисления, где каждая цифра может быть 0, 1, 2, 3, 4, 5, 6, 7, 8 или 9. Десятичная система счисления число также называется «с основанием 10», потому что в ней возможно использование 10 цифр (от 0 до 9). В этой системе мы считаем так: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,… По умолчанию, числа в программах на C++ считаются десятичными.

В двоичной системе счисления всего 2 цифры: 0 и 1, поэтому она называется «с основанием 2». В двоичном формате мы считаем так: 0, 1, 10, 11, 100, 101, 110, 111,…

Существуют две других системы счисления, которые иногда используются в вычислениях: восьмеричная и шестнадцатеричная.

Восьмеричная система счисления – с основанием 8, то есть доступны только цифры: 0, 1, 2, 3, 4, 5, 6 и 7. В восьмеричном формате мы считаем так: 0, 1, 2, 3, 4, 5, 6, 7, 10, 11, 12,… (примечание: цифр 8 и 9 нет, поэтому мы сразу переходим от 7 к 10).

Десятичная система 0 1 2 3 4 5 6 7 8 9 10 11
Восьмеричная система 0 1 2 3 4 5 6 7 10 11 12 13

Чтобы использовать литерал в восьмеричном формате, добавьте к вашему литералу префикс 0 (ноль):

Эта программа печатает:

Почему 10, а не 12? Потому что числа печатаются в десятичном формате, а 12 в восьмеричном формате = 10 десятичном формате.

Восьмеричная система счисления практически не используется, и мы рекомендуем вам ее избегать.

Десятичная система 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
Восьмеричная система 0 1 2 3 4 5 6 7 8 9 A B C D E F 10 11

Эта программа печатает:

Поскольку для одной шестнадцатеричной цифры возможны 16 различных значений, мы можем сказать, что одна шестнадцатеричная цифра использует 4 бита. Следовательно, пара шестнадцатеричных цифр может использоваться для точного представления полного байта.

До C++14 не было возможности назначить литерал в двоичном формате. Однако шестнадцатеричные пары предоставляют нам для этого полезный обходной путь:

Литералы в двоичном формате и разделители цифр C++14

В C++14 мы можем назначать литералы в двоичном формате с помощью префикса 0b :

Поскольку длинные литералы трудночитаемы, в C++14 также добавлена ​​возможность использования кавычек ( ‘ ) в качестве разделителя цифр.

Если ваш компилятор несовместим с C++14, он пожалуется, если вы попытаетесь использовать любой из этих приемов.

Печать десятичных, восьмеричных, шестнадцатеричных и двоичных чисел

Эта программа печатает:

Эта программа напечатает:

Мы также можем создать временный (анонимный) std::bitset для печати одного значения. В приведенном выше коде эта строка:

Магические числа, и почему это плохо

Рассмотрим следующий фрагмент:

Число, такое как 30 в приведенном выше фрагменте, называется магическим числом. Магическое число – это литерал (обычно число) в середине кода, не имеющий никакого контекста. Что значит 30? Хотя вы, наверное, догадываетесь, что в данном случае это максимальное количество студентов в классе, но это не совсем очевидно. В более сложных программах может быть очень сложно сделать вывод, что представляет собой жестко запрограммированное число, если нет комментария, объясняющего его.

Использование магических чисел обычно считается плохой практикой, потому что, помимо отсутствия контекста, для чего они используются, они создают проблемы, если значение необходимо изменить. Предположим, школа покупает новые парты, позволяющие увеличить количество учеников в классе с 30 до 35, и наша программа должна это отразить. Рассмотрим следующую программу:

Хотя мы говорим «магические числа», это относится ко всем видам значений. Рассмотрим следующий пример:

В этом примере только одно число (100), но оно также используется в строках. Если мы решим обновить максимальное количество, скажем, на 200, нам придется обновить три разных случая, где встречается 100.

К счастью, существуют лучшие варианты (символьные константы). Об этом мы поговорим на следующем уроке.

Лучшая практика

Не используйте магические числа в своем коде.

Источник

Пользовательские литералы в C++11

Более полугода прошло с момента принятия стандарта C++11. В сети можно найти много материалов посвященных новому стандарту, однако большинство из них касаются самых простых возможностей, самых сладких. Я говорю о лямбда-функциях, системе автоматического выведения типов, новых спецификаторах, умных указателях и т.д. Да, это действительно интересные вещи и, можно смело сказать, они одни из самых полезных и часто используемых. Но на них свет клином не сошелся, и новенький C++11 предлагает нам не только их.

Ниже я хочу рассказать о пользовательских литералах — весьма полезном средстве, хоть и не в повседневных целях.

Что такое литерал?

Литерал — это некоторое выражение, создающее объект. Литералы появились не только в C++11, они были и в C++03. Например, есть литералы для создания символа, строки, вещественных чисел, и т.д.

Все это литералы. С понятием литералов, думаю, мы разобрались. Самое время вернуться к C++11.

Пользовательские литералы в C++11

Как уже было отмечено выше, новый стандарт предлагает средства для создания пользовательских литералов. Существует две категории пользовательских литералов: сырые литералы (raw) и литералы для встроенных типов (cooked).

Стоит, однако, заметить, что C++ позволяет создавать только литералы-суфиксы. Иными словами, создать литералы префиксы (как, например, 0x), или префиксо-суфиксные (как «») — не получится.

Литералы для численных типов

Начнем с литералов для встроенных типов. Чтобы создать литерал для численных типов необходимо воспользоваться одной из двух сигнатур:

Использование литерала будет осуществляется следующим образом:

Ниже приведен пример литерала, преобразовывающего минуты в секунды.

Литералы для строковых типов

Для создания литерала этого типа, необходимо воспользоваться одной из следующих сигнатур:

Сигнатура выбирается в зависимости от типа строки:

Пример литерала преобразующего C-style строку в std::string приведен ниже.

Сырые литералы

Ну и наконец настало время сырого литерала. Сигнатура сырого литерала выглядит следующим образом:

Этот тип литералов приходит на помощь тогда, когда входное число надо разобрать посимвольно. Т.e. в этом случае число передается в оператор как строка. Если не совсем понятно, взгляните на приведенный ниже код:

Используя данный тип литералов, можно написать литерал преобразующий двоичное число в десятичное. Например вот так:

Существует еще одна сигнатура для сырых литералов. Основана она на применении Variadic Template:

Преимущества литералов на базе Variadic Template заключается в том, что они могут вычисляться на этапе компиляции. Тот же литерал преобразования двоичного числа в десятичное может быть переписан так:

У внимательно читателя мог возникнуть вопрос: «А что если создать и сырой литерал, и литерал для числа с одним и тем же именем? Какой литерал компилятор применит?». Стандарт по этому поводу дает точный ответ и говорит о попытке компилятора применить литералы в следующем порядке:

Выводы

Бьёрн Страуструп на конференции Going Native 2012 приводил полезный пример использования литералов. Мне кажется, он наглядно демонстрирует факт повышения читаемости кода, а также снижает вероятность ошибиться.

Механизм пользовательских литералов — это полезный в некоторых случаях инструмент. Использовать его где попало не стоит. Подумайте дважды, прежде чем их использовать, ведь литералы коварны: они могут…

Источник

BestProg

Литералы

Содержание

Поиск на других ресурсах:

Литералы – это постоянные значения, которые представляются в удобной для восприятия форме.

2. Какого типа могут быть литералы?

Литералы могут быть любого простого типа. Представление любого литерала зависит от конкретного типа.

В зависимости от значения литералы могут быть:

3. Как представляются целочисленные литералы?

По умолчанию, все целочисленные литералы имеют тип int :

Примеры литералов типа int :

Для того чтобы литерал имел тип long к нему нужно добавить суффикс ‘ l ‘ или ‘ L ‘. Примеры литералов типа long :

Для того чтобы литерал имел беззнаковый целочисленный тип к нему нужно добавить суффикс ‘ u ‘ или ‘ U ‘. Примеры литералов типа uint :

Примеры литералов типа ulong :

Можно, но при условии, что присваиваемое значение может быть представлено целочисленным типом.

Пример:

5. Каким образом представляются литералы, принадлежащие к типам с плавающей запятой?

Примеры литералов типа double :

Пример описания и присвоения значения литералов переменным, которые принадлежат к типам с плавающей запятой:

7. Как представляются значения целочисленных литералов в шестнадцатеричной системе исчисления?

Язык C# разрешает также представлять целочисленные литералы в шестнадцатеричной системе исчисления. Шестнадцатеричные литералы должны начинаться с символов « 0x «.

Примеры представления литералов в шестнадцатеричной системе исчисления:

8. Как представляются символьные литералы ( char )?

Примеры символьных литералов:

К символьным литералам также относятся управляющие последовательности символов, которые еще называются константами с обратной косой чертой. Отображение таких символов вызывает некоторые трудности.

Примеры управляющих последовательностей символов:

Пример использования в программе управляющих последовательностей:

9. Как представляются строчные литералы?

В языке C# строчный литерал представляет собой набор символов, взятых в двойные кавычки. Примеры строчных литералов

Если нужно задать в виде литерала следующий путь:

то он будет иметь такой вид:

Пример описания переменной типа строчный литерал, в которой задается путь к файлу:

10. Какой вид имеет буквальный строчный литерал?

Буквальный строчный литерал начинается с символа @ после которого следует строка в кавычках. Содержимое буквального строчного литерала принимается без изменений и может быть расширено до двух и более строк.

Например:

В буквальный строчный литерал можно включить управляющие символы (табуляция, новая строка и т.п.) не применяя управляющие последовательности.

Источник

Понравилась статья? Поделиться с друзьями:

Не пропустите наши новые статьи:

  • лит код программирование что это
  • листы в программе excel считаются безразмерными и поэтому их нельзя распечатать
  • Листинг что это программирование
  • Листинг программы что это
  • лист программирования охранной сигнализации образец

  • Операционные системы и программное обеспечение
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest
    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии