
- •Лекция 2
- •Базовые элементы языка программирования
- •Категории лексем
- •Идентификаторы
- •Ключевые слова
- •Зарезервированные идентификаторы
- •Стандартные идентификаторы
- •Идентификатор пользователя
- •Константы
- •Литералы
- •Целые константы
- •Вещественные константы
- •Булевские (логические) константы
- •Символьные константы
- •Строковые константы
- •Именованные типизированные константы
- •Перечислимые константы
- •Препроцессорные константы
- •Знаки операций
- •Знаки пунктуации
- •Разделители
- •Пробельные разделители
- •В результате изучения материала лекции необходимо знать
Булевские (логические) константы
Булевские константы – это литералы true (истина) и false (ложь). Их можно использовать в логических выражениях и присваивать логическим переменным. В С++ действует также унаследованное из С правило, в соответствии с которым значению false соответствует число 0, а значению true – любое число, отличное от 0 (1, -2, …).
Символьные константы
Символьные литералы – это один или несколько символов, заключенных в апострофы: ’A’, ’я’, ’+’, ’\n’.
Примеры различного определения символьной константы:
const char c='1'; //символ ‘1’ const char d=49; //задание символа ‘1’ его ASCII-кодом
Перед начальным апострофом может размещаться буква L. Между апострофами может быть записан произвольный символ, кроме \, ‘, “, ?. Эти символы записываются в виде ESC-последовательностей: \\, \’, \”, \?.
Ординарная односимвольная константа имеет тип char, записывается без ведущего символа L, состоит из одного символа. Ее значение эквивалентно числовому значению из применяемой в реализации кодовой таблицы символов (например, на IBM-совместимых компьютерах, таблицы кодов ASCII). Ординарная мультисимвольная константа имеет тип int и состоит из нескольких символов (ее значение зависит от реализации).
Константа, включающая ведущий символ L, имеет тип wchar_t и называется широкой (широкосимвольной). Значением широкой константы из одного символа является числовое значение кода из применяемой в реализации кодовой таблицы символов. Значение широкой константы из нескольких символов зависит от реализации.
Символьная константа может использоваться как целая константа, причем ее значением является интерпретация внутреннего представления данного символа в виде целого значения. Символьная константа не может быть пустой.
Для визуального представления неграфических символов используются ESC-последовательности, записываемые между апострофами. ESC-последовательность начинается символом обратной дробной черты ( \ - backslash) и может быть представлена:
одним знаком:
переход на новую строку ( \n), горизонтальная табуляция ( \t), возврат каретки (\r), звонок (\a), обратная дробная черта (\\), возврат на один шаг (backspace, \b); нуль-символ окончания строки в С++(NULL) ‘\0’
числом из 1 .. 3 восьмеричных цифр, определяющим код символа; ‘\ooo’, где ooo – восьмеричные цифры, представляющие символ в таблице кодов ASCII (восьмеричное число в диапазоне от 0 до 377, превышение приводит к ошибке);
числом из 1-3 шестнадцатеричных цифр, определяющим код символа, (с предшествующей буквой X или х); так можно представить и печатаемый символ (за \x может быть записано любое количество шестнадцатеричных цифр, однако значение не должно выходить за диапазон 0x00-0xFF). Любой неподходящий символ последовательности \ооо или \хhhh считается концом восьмеричного или соответственно шестнадцатеричного кода.
Например:
‘\x27’ – АSCII-код символа апострофа;
‘\xa’ – АSCII-код символа перехода на новую строку;
‘\40’ – АSCII-код пробела;
Таблица 2.5. Управляющие последовательности (основные ESC-последовательности):
содержание |
последовательность |
обозначение |
значение |
новая строка |
\n |
NL (LF) |
0ха |
возврат каретки |
\r |
CR |
0хd |
звонок |
\a |
BEL |
0х7 |
горизонтальная табуляция |
\t |
HT |
0х9 |
вертикальная табуляция |
\v |
VT |
0хb |
возврат на шаг |
\b |
BS |
0х8 |
перевод формата |
\f |
FF |
|
обратная косая черта |
\\ |
\ |
0х5с |
апостроф |
\’ |
‘ |
0х27 |
двойная кавычка |
\” |
“ |
0х22 |
знак вопроса |
\? |
? |
|
нулевой символ |
‘\0’ |
NULL |
|
восьмеричный код |
\ооо |
ооо |
|
шестнадцатеричный код |
\хhhh |
hhh |
|
Вычислить размеры памяти, выделенной для символьных констант разных типов, помогут, например, операторы:
int main() {
cout << sizeof 'z' << endl; //1
cout << sizeof '\n\t' << endl; //4, т.к. мультисимвольная
cout << sizeof L'\x4F' << endl; //2, т.к. широкосимвольная
cout << sizeof '\111' << endl; //1, т.к. 8-ичный код
_getch();
return 0;
}