Tw-city.info

IT Новости
5 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Что такое литерал в программировании

Что такое литерал в программировании

В С++ имеется набор встроенных типов данных для представления целых и вещественных чисел, символов, а также тип данных “символьный массив”, который служит для хранения символьных строк. Тип char служит для хранения отдельных символов и небольших целых чисел. Он занимает один машинный байт. Типы short, int и long предназначены для представления целых чисел. Эти типы различаются только диапазоном значений, которые могут принимать числа, а конкретные размеры перечисленных типов зависят от реализации. Обычно short занимает половину машинного слова, int – одно слово, long – одно или два слова. В 32-битных системах int и long, как правило, одного размера.

Типы float, double и long double предназначены для чисел с плавающей точкой и различаются точностью представления (количеством значащих разрядов) и диапазоном. Обычно float (одинарная точность) занимает одно машинное слово, double (двойная точность) – два, а long double (расширенная точность) – три.
char, short, int и long вместе составляют целые типы, которые, в свою очередь, могут быть знаковыми (signed) и беззнаковыми (unsigned). В знаковых типах самый левый бит служит для хранения знака (0 – плюс, 1 – минус), а оставшиеся биты содержат значение. В беззнаковых типах все биты используются для значения. 8-битовый тип signed char может представлять значения от -128 до 127, а unsigned char – от 0 до 255.

Когда в программе встречается некоторое число, например 1, то это число называется литералом, или литеральной константой. Константой, потому что мы не можем изменить его значение, и литералом, потому что его значение фигурирует в тексте программы. Литерал является неадресуемой величиной: хотя реально он, конечно, хранится в памяти машины, нет никакого способа узнать его адрес. Каждый литерал имеет определенный тип. Так, 0 имеет тип int, 3.14159 – тип double.

Литералы целых типов можно записать в десятичном, восьмеричном и шестнадцатеричном виде. Вот как выглядит число 20, представленное десятичным, восьмеричным и шестнадцатеричным литералами:

20 // десятичный
024 // восьмеричный
0х14 // шестнадцатеричный

Если литерал начинается с 0, он трактуется как восьмеричный, если с 0х или 0Х, то как шестнадцатеричный. Привычная запись рассматривается как десятичное число.
По умолчанию все целые литералы имеют тип signed int. Можно явно определить целый литерал как имеющий тип long, приписав в конце числа букву L (используется как прописная L, так и строчная l, однако для удобства чтения не следует употреблять строчную: ее легко перепутать с

1). Буква U (или u) в конце определяет литерал как unsigned int, а две буквы – UL или LU – как тип unsigned long. Например:

Литералы, представляющие действительные числа, могут быть записаны как с десятичной точкой, так и в научной (экспоненциальной) нотации. По умолчанию они имеют тип double. Для явного указания типа float нужно использовать суффикс F или f, а для long double — L или l, но только в случае записи с десятичной точкой. Например:

Слова true и false являются литералами типа bool.
Представимые литеральные символьные константы записываются как символы в одинарных кавычках. Например:

Специальные символы (табуляция, возврат каретки) записываются как escape-последовательности . Определены следующие такие последовательности (они начинаются с символа обратной косой черты):

escape-последовательность общего вида имеет форму ooo, где ooo – от одной до трех восьмеричных цифр. Это число является кодом символа. Используя ASCII-код, мы можем написать следующие литералы:

Символьный литерал может иметь префикс L (например, L’a’), что означает специальный тип wchar_t – двухбайтовый символьный тип, который применяется для хранения символов национальных алфавитов, если они не могут быть представлены обычным типом char, как, например, китайские или японские буквы.
Строковый литерал – строка символов, заключенная в двойные кавычки. Такой литерал может занимать и несколько строк, в этом случае в конце строки ставится обратная косая черта. Специальные символы могут быть представлены своими escape-последовательностями. Вот примеры строковых литералов:

Фактически строковый литерал представляет собой массив символьных констант, где по соглашению языков С и С++ последним элементом всегда является специальный символ с кодом 0 ().
Литерал ‘A’ задает единственный символ А, а строковый литерал «А» – массив из двух элементов: ‘А’ и (пустого символа).
Раз существует тип wchar_t, существуют и литералы этого типа, обозначаемые, как и в случае с отдельными символами, префиксом L:

Строковый литерал типа wchar_t – это массив символов того же типа, завершенный нулем.
Если в тесте программы идут подряд два или несколько строковых литералов (типа char или wchar_t), компилятор соединяет их в одну строку. Например, следующий текст

породит массив из восьми символов – twosome и завершающий нулевой символ. Результат конкатенации строк разного типа не определен. Если написать:

то на каком-то компьютере результатом будет некоторая осмысленная строка, а на другом может оказаться нечто совсем иное. Программы, использующие особенности реализации того или иного компилятора или операционной системы, являются непереносимыми. Мы крайне не рекомендуем пользоваться такими конструкциями.

Упражнение 3.1

Объясните разницу в определениях следующих литералов:

Упражнение 3.2

Какие ошибки допущены в приведенных ниже примерах?

JS для начинающих. Урок 1.1: Литералы

Автор: Антон Кургузенков
Дата записи

Всем привет. Сегодня у нас первая лекция в рамках курса «Javascript для начинающих«, непосредственно связанная с изучением JavaScript. И начнем мы с литералов.

Понятие литерала

Литерал – это любое значение указанное явным образом в коде. В качестве литералов в js могут выступать числа, строки (текстовые значения), логические значения. Функциональные литералы, массивы и объекты мы рассмотрим позже.

Числовые литералы

В js дробные и целые числа в десятичной системе счисления записываются в виде последовательности цифр. Дробная часть десятичной дроби отделяется точкой. Если опустить целую часть десятичной дроби, то она будет считаться равной нулю. Например, литерал .8 описывает значение 0.8.

Читать еще:  Программирование rs 485

Примеры числовых литералов: 0, 2, 4, 8, 3.14, .2.

Экспоненциальная форма записи числовых литералов

Числовые литералы могут представляться в экспоненциальной форме записи. Согласно этой записи вначале (необязательно, если есть дробная часть) идут цифры, затем дробная часть (необязательно, если есть целая часть), отделённая точкой, затем (необязательно) знак «+» или минус и буква e (E).

Такая запись обозначает число, умноженное на 10 в степени, определяемой числом, которое стоит после буквы e (E). Например, 6.2e10 — это 6.2 умножить на 10 в 10-ой степени, 1.2E-2 – это 1.2 умножить на 10 в минус второй степени, .1e1 — это единица, -.2e3 – это -200 и т.д.

Шестнадцатеричные литералы

Такие литералы задают числа в шестнадцатеричной системе счисления, они начинаются с символов «0x» или «0X», а затем следует запись числа в шестнадцатеричной форме. Такая запись содержит числа от 0 до 9 и большие или маленькие буквы a, b, c, d, e, f.

Примеры шестнадцатеричных литералов: 0xFF, 0Xbb, 0x123, 0x0.

Для перевода числа из десятеричной системы счисления в шестнадцатиричную необходимо делить нацело (без остатка) на 16 пока не получится ноль, записывая остатки от деления в обратном порядке, при этом остаток 10 запишется как A, 11 как B и т.д.

Переведём число 123 из десятичной, в шестнадцатеричную систему счисления. Символ «/» будет означать деление нацело.

123 / 16 = 7, остаток 11 (запишется как B вторым символом)
7 / 16 = 0, остаток 7

В итоге шестнадцатеричное представление числа 123 – 7B, а литерал, описывающий это значение – 0X7B.

Для перевода числа из шестнадцатеричной формы представления в десятичную необходимо начиная с последних брать цифры этого числа, умножать на 16 в степени номер цифры считая с нуля и с конца числа, при этом заменяя цифры A, B, C, D, E, F на 10, 11, 12, 13, 14 и 15. Например, 7B = B * 16^0 + 7 * 16^1 = 11 * 1 + 7 * 16 = 11 + 112 = 123.

Шестнадцатеричная форма записи используется, как более краткое представление числа в текстовом виде. С помощью этой формы записи задаются, например, цвета в СSS-свойствах и кодируются кириллические символы в get-запросе.

Восьмеричные литералы

Такие литералы задают числа в восьмеричной системе счисления, они начинаются с нуля, а затем следует запись числа в восьмеричной форме. Такая запись содержит числа от 0 до 7.

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

Примеры восьмеричных литералов: , 012, 0123, 02.

Если после нуля стоит последовательность цифр, содержащая 8 или 9, то такой числовой литерал описывает число в десятичной системе счисления, состоящее из цифр, стоящих после нуля.

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

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

Примеры строковых литералов: ‘Привет мир!’, «site=’true-coder.ru’», », ‘123’.
Некорректные строковые литералы: ‘mess=’hello ‘, «двойные («) кавычки».

Логические значения

Логический тип данных имеет всего два возможных значения: true, false. Логическое значение говорит об истинности чего-либо. Возможно, вам проще будет рассматривать эти значения, как «да» (true) или «нет» (false).

BestProg

Литералы

Содержание

1. Что такое литералы в языке C# ? Примеры литералов.

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

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

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

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

  • целочисленных типов — int , uint , long , ulong ;
  • типов с плавающей точкой — float , double , decimal ;
  • символьного типа char ;
  • строчного типа string.
3. Как представляются целочисленные литералы?

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

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

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

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

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

4. Можно ли целочисленные литералы присваивать переменным типа byte , sbyte , short и ushort ?

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

Пример:

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

По умолчанию, литералы типа с плавающей запятой относятся к типу double . Кроме того, к литералам типа double можно прибавлять суффикс ‘ d ‘ или ‘ D ‘ (это ничего не меняет).

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

Если нужно, чтобы литерал имел тип float , к нему нужно добавить суффикс ‘ f ‘ или ‘ F ‘. Примеры литералов типа float :

Если нужно, чтобы литерал имел тип decimal , то к нему прибавляется суффикс ‘ m ‘ или ‘ M ‘. Примеры литералов типа decimal :

6. Как осуществляется присвоение значения литералов переменным типов float и decimal ?

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

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

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

В этих литералах используются числа от 0 до 9 , а также буквы от ‘ А ‘ к ‘ F ‘.

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

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

Символьные литералы принадлежат к типу char . Символьные литералы берутся в одинарные кавычки.

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

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

Читать еще:  Программирование консольных приложений

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

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

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

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

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

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

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

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

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

Например:

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

Лексика языка

Литералы

Литералы позволяют задать в программе значения для числовых, символьных и строковых выражений, а также null- литералов . Всего в Java определено 6 видов литералов :

  • целочисленный (integer);
  • дробный (floating-point);
  • булевский (boolean);
  • символьный (character);
  • строковый (string);
  • null- литерал (null-literal).

Рассмотрим их по отдельности.

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

Целочисленные литералы позволяют задавать целочисленные значения в десятичном, восьмеричном и шестнадцатеричном виде. Десятичный формат традиционен и ничем не отличается от правил, принятых в других языках. Значения в восьмеричном виде начинаются с нуля, и, конечно, использование цифр 8 и 9 запрещено. Запись шестнадцатеричных чисел начинается с 0x или 0X (цифра 0 и латинская ASCII -буква X в произвольном регистре). Таким образом, ноль можно записать тремя различными способами:

Как обычно, для записи цифр 10 — 15 в шестнадцатеричном формате используются буквы A , B , C , D , E , F , прописные или строчные. Примеры таких литералов :

Типы данных рассматриваются ниже, однако здесь необходимо упомянуть два целочисленных типа int и long длиной 4 и 8 байт, соответственно (или 32 и 64 бита, соответственно). Оба эти типа знаковые, т.е. тип int хранит значения от -2 31 до 2 31 -1 , или от -2.147.483.648 до 2.147.483.647 . По умолчанию целочисленный литерал имеет тип int , а значит, в программе допустимо использовать литералы только от 0 до 2147483648 , иначе возникнет ошибка компиляции. При этом литерал 2147483648 можно использовать только как аргумент унарного оператора — :

Соответственно, допустимые литералы в восьмеричной записи должны быть от 00 до 017777777777 ( =2 31 -1 ), с унарным оператором — допустимо также -020000000000 ( = -2 31 ). Аналогично для шестнадцатеричного формата – от 0x0 до 0x7fffffff ( =2 31 -1 ), а также -0x80000000 ( = -2 31 ).

Тип long имеет длину 64 бита, а значит, позволяет хранить значения от -2 63 до 2 63 -1 . Чтобы ввести такой литерал , необходимо в конце поставить латинскую букву L или l , тогда все значение будет трактоваться как long . Аналогично можно выписать максимальные допустимые значения для них:

Другие примеры целочисленных литералов типа long :

Дробные литералы

Дробные литералы представляют собой числа с плавающей десятичной точкой. Правила записи таких чисел такие же, как и в большинстве современных языков программирования.

Таким образом, дробный литерал состоит из следующих составных частей:

  • целая часть;
  • десятичная точка (используется ASCII -символ точка);
  • дробная часть;
  • порядок (состоит из латинской ASCII -буквы E в произвольном регистре и целого числа с опциональным знаком + или — );
  • окончание-указатель типа.

Целая и дробная части записываются десятичными цифрами, а указатель типа (аналог указателя L или l для целочисленных литералов типа long ) имеет два возможных значения – латинская ASCII -буква D (для типа double ) или F (для типа float ) в произвольном регистре. Они будут подробно рассмотрены ниже.

Необходимыми частями являются:

  • хотя бы одна цифра в целой или дробной части;
  • десятичная точка или показатель степени, или указатель типа.

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

В Java есть два дробных типа, упомянутые выше, – float и double . Их длина – 4 и 8 байт или 32 и 64 бита, соответственно. Дробный литерал имеет тип float , если он заканчивается на латинскую букву F в произвольном регистре. В противном случае он рассматривается как значение типа double и может включать в себя окончание D или d , как признак типа double (используется только для наглядности).

В Java дробные числа 32-битного типа float и 64-битного типа double хранятся в памяти в бинарном виде в формате, стандартизированном спецификацией IEEE 754 (полное название – IEEE Standard for Binary Floating-Point Arithmetic, ANSI/IEEE Standard 754-1985 (IEEE, New York)). В этой спецификации описаны не только конечные дробные величины, но и еще несколько особых значений, а именно:

  • положительная и отрицательная бесконечности (positive/negative infinity);
  • значение «не число», Not-a-Number, сокращенно NaN;
  • положительный и отрицательный нули.

Для этих значений нет специальных обозначений. Чтобы получить такие величины, необходимо либо произвести арифметическую операцию (например, результатом деления ноль на ноль 0.0/0.0 является NaN ), либо обратиться к константам в классах Float и Double , а именно POSITIVE_INFINITY , NEGATIVE_INFINITY и NaN . Более подробно работа с этими особенными значениями рассматривается в следующей лекции.

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

  • для float : 3.40282347e+38f
  • для double : 1.79769313486231570e+308

Кроме того, для дробных величин становится важным еще одно предельное значение – минимальное положительное ненулевое значение:

  • для float : 1.40239846e-45f
  • для double : 4.94065645841246544e-324

Попытка указать литерал со слишком большим абсолютным значением (например, 1e40F ) приведет к ошибке компиляции. Такая величина должна представляться бесконечностью. Аналогично, указание литерала со слишком малым ненулевым значением (например, 1e-350 ) также приводит к ошибке. Это значение должно быть округлено до нуля. Однако если округление приводит не к нулю, то компилятор произведет его сам:

Стандартных возможностей вводить дробные значения не в десятичной системе в Java нет, однако классы Float и Double предоставляют много вспомогательных методов, в том числе и для такой задачи.

Читать еще:  C сетевое программирование
Логические литералы

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

Символьные литералы

Символьные литералы описывают один символ из набора Unicode , заключенный в одиночные кавычки, или апострофы ( ASCII -символ single quote , u0027 ). Например:

Также допускается специальная запись для описания символа через его код (см. тему «Кодировка»). Примеры:

Символьный литерал должен содержать строго один символ, или специальную последовательность, начинающуюся с . Для записи специальных символов (неотображаемых и служебных, таких как » , ‘ , ) используются следующие обозначения:

Первая колонка описывает стандартные обозначения специальных символов, используемые в Java-программах. Вторая колонка представляет их в стандартном виде Unicode -символов. Третья колонка содержит английские и русские описания. Использование в комбинации с другими символами приведет к ошибке компиляции.

Поддержка ввода символов через восьмеричный код обеспечивается для совместимости с С. Например:

Однако таким образом можно задать лишь символы от u0000 до u00ff (т.е. с кодом от 0 до 255), поэтому Unicode -последовательности предпочтительней.

Поскольку обработка Unicode -последовательностей ( uhhhh ) производится раньше лексического анализа, то следующий пример является ошибкой:

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

Аналогично и для символа u000d (возврат каретки) необходимо использовать обозначение r .

Специальные символы можно использовать в составе как символьных, так и строковых литералов .

Литералы

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

Целочисленные литералы — самый используемый тип в программах. Любое целочисленное значение является числовым литералом, т.е. значения 1, 5, 9, 42 и т.п. являются числовыми литералами с основанием 10. Также можно использовать восьмеричные и шестнадцатиричные значения.

Восьмиричные значения обозначаются ведущим нулем (обычные десятичные числа не могут иметь ведущий нуль). По этой причине с виду нормальное число 09 вызовет ошибку компиляции, так как выйдет за пределы диапазона от 0 до 7 допустимых восьмеричных значений.

Шестнадцатиричные значения обозначают ведущим нулём и символом x (икс). Можно использовать маленький (0x) и большой (0X) символ в числах. Диапазон допустимых цифр — от 0 до 15, где цифры от 10 до 15 заменяются буквами от A до F (можно также использовать символы от a до f в нижнем регистре).

Целочисленные литералы создают значения типа int. Если вы создали переменную типа byte или long, а значение литерала находится в диапазоне допустимых значений этих типов, то ошибки не возникает. Не возникает проблем и с типом long, у которого диапазон значений всегда больше, чем у int. Но при этом нужно явно указать, что значение литерала имеет тип long при помощи строчной или прописной буквы L. Например, 899888777666555444333L.

Целочисленное значение можно также присвоить типу char, если оно лежит в допустимых пределах.

Литералы с плавающей точкой

Числа с плавающей точкой представляют десятичные значения с дробной частью. Число можно записать в двух вариантах — в стандартной и научной форме записи. Стандартная форма — целое число, за которым следуют десятичная точка и дробная часть (например, 3.14). Научная форма записи использует стандартную форму записи числа с плавающей точкой, к которой добавлен суффикс, указывающий степенную функцию числа 10, на которую нужно умножить данное число. Для указания экспоненциальной функции используют символ E или e, за которыми следует десятичное число (положительное или отрицательное). Например, 5.07E12.

По умолчанию литералам с плавающей точкой присвоен тип double. Если вам нужен тип float, то нужно дописать символ F или f. Кстати, для double можно использовать суффиксы D или d, но в этом нет необходимости.

Также возможна запись шестнадцатиричных литерал с плавающей точкой, но на практике я не встречал подобную запись. В этом случае вместо E используется P (или p) — 0x14.3p2.

Символьные литералы

В Java символы представляют собой 16-битовые значения в наборе символов Unicode. Эти значения можно преобразовать в целые значения и применить операции сложения и вычитания. Символьные литералы обрамляются одинарными кавычками. Обычные символы можно ввести стандартным способом, например, ‘c’, ‘a’, ‘@’. Существуют также символы, которые следует экранировать обратным слешем, например, чтобы вывести сам символ одинарной кавычки, нужно использовать вариант ‘n». Для символа новой строки используется ‘n’.

Можно вывести нужный символ, используя его восьмеричное или шестнадцатиричное значение. При восьмеричной форме используют обратный слеш, за которым следует трёхзначный номер — ‘143’.

Для ввода шестнадцатиричного значения используют обратный слеш, символ u, за которыми следуют четыре шестнадцатиричные цифры, например, ‘u0061’.

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

Строковые литералы — это набор символов в двойных кавычках, например, «Кот — это муж кошки». Внутри строковых литералов также можно использовать управляющие символы, например, для перевода на новую строку — «КотnКошкаnКотёнок».

Булевы литералы

Есть только два булевых литерала — true и false. В отличие от некоторых языков программирования, эти значения не преобразуются в числовые значения. При этом литерал true не равен 1, а литерал false не равен 0.

JDK 7

Раньше Android не поддерживал JDK 7. Сейчас поддержка имеется и стали доступны новые возможности.

В JDK 7 можно использовать целочисленные литералы в двоичной системе. Для этого нужно использовать префикс 0b или 0B:

Кроме того, в JDK 7 можно вставлять символы подчёркивания для облегчения чтения больших числовых литералов:

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

Подобная запись удобна при записи вручную программистом номеров телефонов и тому подобных вещей, чтобы визуально лучше анализировать значения. А умная железка сама разберётся, что к чему и не будет удивляться символам подчёркивания в числах.

Ссылка на основную публикацию
ВсеИнструменты 220 Вольт
Adblock
detector
×
×