Постоянные значения, которые вводятся в программу как часть исходного кода, называются литералами .
Литералы могут иметь любой из основных типов данных и могут быть разделены на целочисленные цифры, числа с плавающей точкой, символы, строки и логические значения.
Опять же, литералы обрабатываются как обычные переменные, за исключением того, что их значения не могут быть изменены после их определения.
Целочисленные литералы
Целочисленный литерал может быть следующих типов:
-
Десятичное число использует нормальное представление чисел с первой цифрой, которая не может быть 0, поскольку эта цифра зарезервирована для указания восьмеричной системы. Это не включает 0 само по себе: 0 — ноль.
-
Octal использует 0 в качестве префикса для нумерации.
-
Двоичный код использует 0b или 0B в качестве префикса.
-
Шестнадцатеричный использует 0x или 0X в качестве префикса.
Десятичное число использует нормальное представление чисел с первой цифрой, которая не может быть 0, поскольку эта цифра зарезервирована для указания восьмеричной системы. Это не включает 0 само по себе: 0 — ноль.
Octal использует 0 в качестве префикса для нумерации.
Двоичный код использует 0b или 0B в качестве префикса.
Шестнадцатеричный использует 0x или 0X в качестве префикса.
Целочисленный литерал также может иметь суффикс, который представляет собой комбинацию U и L для беззнакового и длинного соответственно. Суффикс может быть в верхнем или нижнем регистре и может быть в любом порядке.
Если вы не используете суффикс, компилятор сам выбирает между int, uint, long и ulong в зависимости от величины значения.
Вот несколько примеров целочисленных литералов —
212 // Legal 215u // Legal 0xFeeL // Legal 078 // Illegal: 8 is not an octal digit 032UU // Illegal: cannot repeat a suffix
Ниже приведены другие примеры различных типов целочисленных литералов —
85 // decimal 0213 // octal 0x4b // hexadecimal 30 // int 30u // unsigned int 30l // long 30ul // unsigned long 0b001 // binary
Литералы с плавающей точкой
Литералы с плавающей запятой могут быть указаны в десятичной системе как в 1.568 или в шестнадцатеричной системе как в 0x91.bc.
В десятичной системе показатель степени может быть представлен путем добавления символа e или E и числа после этого. Например, 2.3e4 означает «2,3 умножить на 10 в степени 4». Символ «+» может быть указан перед значением показателя степени, но это не имеет никакого эффекта. Например, 2.3e4 и 2.3e + 4 одинаковы.
Символ «-», добавляемый до значения показателя степени, меняет значение на «делится на 10 в степени». Например, 2.3e-2 означает «2.3, деленное на 10 в степени 2».
В шестнадцатеричной системе значение начинается с 0x или 0X. Показатель степени определяется как p или P вместо e или E. Показатель степени означает не «10 в степень», а «2 в степень». Например, P4 в 0xabc.defP4 означает «abc.de умножить на 2 до степени 4».
Вот несколько примеров литералов с плавающей точкой —
3.14159 // Legal 314159E-5L // Legal 510E // Illegal: incomplete exponent 210f // Illegal: no decimal or exponent .e55 // Illegal: missing integer or fraction 0xabc.defP4 // Legal Hexa decimal with exponent 0xabc.defe4 // Legal Hexa decimal without exponent.
По умолчанию тип литерала с плавающей запятой — двойной. F и F означают float, а спецификатор L означает вещественное.
Логические литералы
Есть два логических литерала, и они являются частью стандартных ключевых слов D —
-
Значение true, представляющее истину.
-
Значение false, представляющее ложь.
Значение true, представляющее истину.
Значение false, представляющее ложь.
Не следует считать значение true равным 1, а значение false равным 0.
Символьные литералы
Символьные литералы заключены в одинарные кавычки.
Символьный литерал может быть простым символом (например, «x»), escape-последовательностью (например, «\ t»), символом ASCII (например, «\ x21»), символом Unicode (например, «\ u011e») или как именованный символ (например, ‘\ ©’, ‘\ ♥’, ‘\ €’).
Существуют определенные символы в D, когда им предшествует обратная косая черта, они будут иметь особое значение, и они используются для представления, например, новой строки (\ n) или табуляции (\ t). Здесь у вас есть список некоторых из таких кодов escape-последовательностей —
Последовательность побега | Имея в виду |
---|---|
\\ | \ персонаж |
\» | ‘ персонаж |
\» | » персонаж |
\? | ? персонаж |
\ а | Оповещение или звонок |
\ б | возврат на одну позицию |
\ е | Форма подачи |
\ п | Новая линия |
\р | Возврат каретки |
\ т | Горизонтальная вкладка |
\ v | Вертикальная вкладка |
В следующем примере показано несколько символов escape-последовательности —
import std.stdio; int main(string[] args) { writefln("Hello\tWorld%c\n",'\x21'); writefln("Have a good day%c",'\x21'); return 0; }
Когда приведенный выше код компилируется и выполняется, он дает следующий результат —
Hello World! Have a good day!
Строковые литералы
Строковые литералы заключены в двойные кавычки. Строка содержит символы, похожие на символьные литералы: простые символы, escape-последовательности и универсальные символы.
Вы можете разбить длинную строку на несколько строк, используя строковые литералы, и разделить их, используя пробелы.
Вот несколько примеров строковых литералов —
import std.stdio; int main(string[] args) { writeln(q"MY_DELIMITER Hello World Have a good day MY_DELIMITER"); writefln("Have a good day%c",'\x21'); auto str = q{int value = 20; ++value;}; writeln(str); }
В приведенном выше примере вы можете найти использование q «MY_DELIMITER MY_DELIMITER» для представления многострочных символов. Также вы можете увидеть q {} для представления самого оператора языка D.