Что является литералом строкового значения
Перейти к содержимому

Что является литералом строкового значения

  • автор:

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

Строковый литерал — это последовательность символов из исходной кодировки, заключенной в двойные кавычки ( » « ). Строковые литералы используются для представления последовательности символов, которые вместе образуют строку, завершающуюся нулевым значением. Необходимо всегда вводить в префикс расширенных строковых литералах букву L .

Синтаксис

string-literal :
« s-char-sequence необ. «
s-char-sequence необ. «

s-char :
любой член исходной кодировки, кроме двойных кавычек ( « ), обратной косой черты ( \ ) или символа новой строки
escape-sequence

Комментарии

В этом примере показан простой строковый литерал:

char *amessage = "This is a string literal."; 

В строковых литералах допустимо использовать все коды, перечисленные в таблице escape-последовательностей. Для представления в строковом литерале двойной кавычки следует использовать escape-последовательность . Одинарная кавычка ( ) может быть представлена без escape-последовательности. Если в строке имеется обратная косая черта ( \ ), после нее должна следовать вторая такая черта ( \\ ). Если обратная косая черта появляется в конце строки, она всегда интерпретируется как символ продолжения строки.

Все о литералах в вопросах разработки

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

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

Определение

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

Нужно запомнить следующие особенности literal:

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

Настоящие именованные константы тоже не подлежат в программировании редактированию во время непосредственного исполнения приложения. В некоторых языках разработки (пример – Delphi) при помощи ключевого слова «const» (без кавычек) иногда обозначаются инициализированные до начала обработки кода статические переменные. Такие компоненты могут редактироваться в процессе работы приложения.

Все о литералах в вопросах разработки

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

Здесь «1» и «Кот» — это литералы, а string pet и int number – непосредственные переменные.

Разновидности

Почти каждый язык программирования позволяет использовать разнообразные типы literals. В зависимости от «разновидности» будет меняться содержание литерала.

В языках разработки предусматриваются примитивные типы. Они отличаются по синтаксису в ЯП. Далее будут приведены примеры того, в коде выглядят литералы Java и C#. Чаще всего встречаются следующие типы литерала:

  • символьный;
  • строковый;
  • логический;
  • пустое значение (null);
  • регулярное выражение;
  • литералы-функции;
  • литералы-объекты.

Далее использование рассматриваемого компонента будет разобрано на примере C# и Java. На второй язык программирования сделан больший упор ввиду его повсеместного и стремительного распространения.

Числа

Первый вариант – это числовые литералы. Они бывают:

  • целочисленные;
  • с плавающей запятой.

Целочисленный литерал – это почти то же самое, что и целые числа. Соответствующая запись является элементарной. Все числовые компоненты записываются в привычной, «стандартной» форме без указывающих символов и прочих составляющих.

Любое число в Java – это по умолчанию целочисленный literal. Допускается явное задание значения переменной или количества итераций в имеющемся цикле. В Java поддерживаются 4 системы счисления:

  • двоичная;
  • десятичная;
  • шестнадцатеричная;
  • восьмеричная.

При рассмотрении числовых литералов в Java нужно запомнить – в JDK 7 появилась возможность записи двоичных значений. Для этого используются префиксы 0b и 0B, а после осуществляется запись с использованием нулей и единиц.

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

По умолчанию целочисленный literal в Java имеет тип int. Если его «параметр» выйдет за пределы присваиваемой переменной, значит в приложении на этапе компиляции возникнет ошибка. Можно использовать тип long. Для этого в конце строчки необходимо выставить символ «L»:

Все о литералах в вопросах разработки

А вот так выглядит присваивание значения «целому» литералу в C#:

Все о литералах в вопросах разработки

Целочисленные «параметры» могут быть как положительными, так и отрицательными.

С плавающей точкой (вещественные)

Следующий вариант – это дробные числа. Они носят название вещественных или «с плавающей точкой». Означает это то, что литералы могут обозначать не только целые, но и дробные элементы. Особо полезный вариант, если в коде использована функция или иное математическое выражение.

Вещественный тип необходимо можно представить несколькими способами:

  • классической десятичной дробью;
  • в научном виде (дробь + суффикс в виде e или E и степени 10).

В Java второй вариант сохраняется в переменной и обрабатывается точно так же, как и классическая форма представления.

Числа с плавающей точкой – это значит, что переменная будет иметь тип double по умолчанию. Можно задействовать float. Для этого в конце строки необходимо поставить f или F:

Все о литералах в вопросах разработки

А вот – пример в C#:

Все о литералах в вопросах разработки

Рассматривая типы существующих литералов, нужно запомнить – в Java нельзя создать литерал-объект. К такому элементу имеет отношение только null.

Строковый вариант

Следующий вариант – это строковый literal. По названию становится ясно – он представляет собой какую-то запись. Строковый литерал – это набор символов, заключенных в двойные кавычки в программном коде. Является достаточно распространенным типом. Он применяется на практике так же часто, как и числовой. Строковый literal может включать в себя служебные символы, которые требуется экранировать (escape-последовательности).

Строковый литерал – это самая обычная строка с заданной записью. Не функция и не команда. Служит для того, чтобы использовать в программном коде тот или иной текст:

Все о литералах в вопросах разработки Все о литералах в вопросах разработки

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

Символьные

Символьные литералы в Java представлены кодовыми таблицами Unicode. Каждый символ – это 16-бит. Символьный literal обозначается при помощи одинарных кавычек.

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

  1. Обычный вариант. Это то, что можно ввести непосредственно с клавиатуры.
  2. Специальный. Символы, которые не получится напечатать на клавиатуре.

Первый вариант можно указать явно. Если в коде используется служебный символ, нужно экранировать его при помощи обратного слеша. Когда нужно, чтобы в консоли появилась функция (константа), рекомендуется использование строкового типа. Это никакой не магический прием, а информация, о которой должен знать каждый разработчик.

Символы, которые нельзя задать в консоли «по умолчанию», допускается использовать в 16-битовом коде. Для этого он указывается с префиксом \u. В восьмеричном стиле задействован обратный слеш.

Все о литералах в вопросах разработки Все о литералах в вопросах разработки

В C# среди использующихся типов литералов отдельно выделяют управляющие последовательности. Если компилятор их встречает, то он воспринимает «команду» как существующую, а не как запись «слеш + буква». Шестнадцатеричный код тоже заключается в одинарные кавычки.

Логические

В ЯП существуют различные типы так называемых литералов, составляющие значимую часть кода. Последний распространенный вариант – это логическая разновидность. Принимает всего 2 значения – «истина» и «ложь». Это – «магический» тип, который позволяет работать с переменными вида boolean.

Используется для обозначения констант true и false в приложении:

Все о литералах в вопросах разработки Все о литералах в вопросах разработки

Использовать соответствующий компонент в блоках с if можно, но такой вариант является моветоном.

Отдельно стоит отметить «магический» тип – null. Это ссылка, которая не указывает ни на один объект. Представлено пустым значением.

Хотите освоить современную IT-специальность? Огромный выбор курсов по востребованным IT-направлениям есть в Otus !

Строковые литералы, строки и указатели на строки

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

char *str = "String Literal"; printf("%s", str);

В данном случае str – это указатель, а «String Literal» – это строковый литерал. Особенность в том, что строковый литерал хранится в Read Only области памяти. Ничего не происходит, когда мы просто читаем значение. Однако указатель не объявлен как const, а это значит, что компилятор позволит изменить значение, на которое ссылается указатель:

char *str = "String Literal"; str[0] = 's';

Этот код упадёт с ошибкой, так как у нас нет прав на модификацию объекта. Для предотвращения такой ситуации нужно обязательно указывать, что это немодифицируемый объект

const char *str = "String Literal";

Тогда неправильный код не скомпилируется. Теперь второй случай

char str[] = "String Literal"; printf("%s", str);

В данном случае str это модифицируемый объект – массив типа char. «String Literal» — всё также строковый литерал, но в данном случае он копируется в массив. str не просто ссылается на read-only область памяти, он содержит копию строки.

char str[] = "String Literal"; str[0] = 's'; printf("%s", str);

Можно было бы написать и так

char str[] = ;

Для простоты, например, можно определить такую функцию, которая выделяет память и копирует туда строковый литерал

#include #include #include #include #include char* copy_and_init(const char *src) < int length; char *out; assert(src != NULL); length = strlen(src) + 1; out = (char*) malloc(length); if (out == NULL) < return NULL; >memcpy(out, src, length); return out; > void main()

Единственная проблема – не забыть очистить память.

ru-Cyrl 18- tutorial Sypachev S.S. 1989-04-14 sypachev_s_s@mail.ru Stepan Sypachev students

email

Всё ещё не понятно? – пиши вопросы на ящик

Что является литералом строкового значения

На прошлом уроке выводили строку, а если говорить более формальным языком, то так называемый строковый литерал.

MySQL
SELECT "Hello world" 

Литерал — это указанное явным образом фиксированное значение, например, число 12 или строка "SQL" .

Основными типами литералов в MySQL являются:

  • строковый
  • числовой
  • логический
  • NULL
  • литерал даты и времени

Строка — это последовательность символов, заключённых в одинарные (') или двойные (") кавычки. Например, 'это строка' и "это строка" .

Строки могут содержать специальные последовательности символов, начинающиеся с "\" (экранирующий символ). Они нужны для того, чтобы СУБД придала обычным символам (буквам и другим знакам) новое особое значение. Например, последовательность "\n" буквально означает "перевод строки", а без предваряющего слеша это была бы обычная буква "n" .

MySQL
SELECT "Строка Другая строка" as String 
String
Строка Другая строка
MySQL
SELECT "Строка \n Другая строка" as String 
String
Строка Другая строка
Пример
Включает в себя целые и дробные числа. Разделительный знак для дробного числа — «.» (точка). 1 , 2.9 , 0.01
Может иметь только целую, дробную часть или обе сразу. .2 , 1.1 , 10
Может быть положительным и отрицательным числом (для положительного числа совсем не обязательно указывать знак). +1 , -10 , -2.2
Могут быть представлены в экспоненциальном виде. 1e3 (=1000) 1e-3 (=0.001)

Для числовых литералов в SQL есть все привычные нам арифметические операторы:

Оператор Описание Пример
% , MOD Деление по модулю 11 % 5 = 1
* Умножение 10 * 16 = 160
+ Сложение 98 + 2 = 100
- Вычитание 50 - 51 = -1
/ Деление 1 / 2 = 0.5
DIV Целочисленное деление 10 DIV 4 = 2

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

MySQL
SELECT (5 * 2 - 6) / 2 AS Result; 

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

Например, если мы хотим указать какую-то дату в запросе, то мы можем это сделать с помощью строки "1970-12-30" , "19701230" или же числа 19701230 . В обоих случаях эти значения будут интерпретироваться как дата «30 декабря 1970 года».

Ниже приведён пример использования литерала даты:

MySQL
SELECT * FROM FamilyMembers WHERE birthday > '1970-12-30' 

Можете не обращать внимание на то, что конкретно делает данный запрос, мы это рассмотрим попозже. Сейчас нам важен именно синтаксис того, как мы можем указывать дату в запросе.

Кроме самой даты, мы можем также указывать отдельно время или же всё вместе.

Описание Формат
Дата Интерпретируется как дата со временем, равным нулю YYYY-MM-DD , YYYYMMDD

Вместо разделителя "-" можно использовать любой знак препинания.

Разделитель тоже можно опустить.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *