Учебники

D Программирование — Литералы

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

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

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

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

Целочисленный литерал может быть следующих типов:

  • Десятичное число использует нормальное представление чисел с первой цифрой, которая не может быть 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-последовательности —

Live Demo

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.