- •Лекция 2
- •Упрощенная модель компиляции
- •Лексический анализ программы
- •Категории лексем
- •Идентификаторы
- •Ключевые слова
- •Зарезервированные идентификаторы
- •Стандартные идетификаторы
- •Идентификатор пользователя
- •Константы
- •Литералы
- •Целые константы
- •Вещественные константы
- •Булевские (логические) константы
- •Символьные константы
- •Строковые константы
- •Именованные константы
- •Перечисляемые константы
- •Препроцессорные константы
- •Знаки операций
- •Знаки пунктуации
- •Разделители
- •Пробельные разделители
Строковые константы
Строковый литерал – это последовательность символов, заключенная в двойные кавычки. Строка в С++ соответствует типу данных «массив символов» и может содержать любые символы алфавита языка, например: ”A”, ”строка”, ”string”, “\n”. Строки завершаются символом ’\0’ (компилятор автоматически добавляет ‘\0’).
При наличии символа L перед открывающей кавычкой, говорят о широкой строковой константе: L”A”, L”строка”, L”string”, L“\n”.
Пустая строка определяется как ”” и сохраняется как один символ ‘\0’, т.е.имеет длину, равную 1. Cимвольная константа и строка из одного символа не одно и то же: ’x’ не есть ”x”. Первое – это один символ, использованный для представления числового значения буквы х. Второе – строка, содержащая букву х и ‘\0’ (имеет длину 2). Поэтому при создании строки (как массива символов) необходимо предусматривать дополнительный байт на символ ‘\0’, а при инициализации такой строки в число инициализирующих элементов включать в качестве завершающего символа ’\0’.
Примеры строковых литералов:
”5” // строковый литерал из символов ’5’ и ’\0’
”symbol” // строковый литерал из семи символов, включая символ ’\0’
”\’” // строковый литерал из апострофа и завершающего нуля
”” // пустая строка (содержит только код завершающего нуля).
”a\tb\n”– //строковые литералы могут содержать управляющие последовательности; // если этот литерал записан в операторе вывода, то на экран выводится: буква a; //несколько пробелов, соответствующих значению символа табуляции; //буква b. После этого происходит переход на следующую строку.
Компилятор объединяет две строковые константы, разделенные символами – разделителями и следующие одна за другой:
char *s=“Mi” “nsk”;
cout <<s << endl; //выведет на экран: Minsk
char *longStr = “Это длинная строка, которую”
“ мы разбили на 3 строки.”
“ Компилятор сам склеит строки.”
Длинную строковую константу можно разместить на нескольких строках, используя в качестве знака переноса обратную косую черту. Например, строка:
char *longStr1= “Никто не доволен своей \
внешностью, но все довольны \
своим умом”
эквивалентна сроке:
“Никто не доволен своей внешностью, но все довольны своим умом”.
Хотя длина строки в С++ практически не ограничена, текст программы не должен выходить за пределы ширины экрана для того, чтобы было удобно читать и распечатывать программу.
Именованные константы
Именованные константы позволяют сделать запись более наглядной. Идентификаторы именованных констант рекомендуется записывать прописными буквами.
В С++ используются типизированные именованные константы:
-
для задания параметров, управляющих: - размером структур данных (например, массивов: const int n=10; int mas[n];), - числом итераций в циклах (const int k=10; for (int i=1; i<k; i++) ….)
-
для задания других значений, изменение которых может потребоваться при отладке или модернизации программы;
-
для обозначения часто встречающихся в программе постоянных величин;
-
при использовании констант, имеющих общеупотребительные обозначения.
Например:
int main ( )
{const int k = 40;
int M[k][k];
float A[k], B[k][k];
……
}