Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
л_2_Лексические_основы_С++.doc
Скачиваний:
11
Добавлен:
04.11.2018
Размер:
582.66 Кб
Скачать

Булевские (логические) константы

Булевские константы – это литералы true (истина) и false (ложь). Их можно использовать в логических выражениях и присваивать логическим переменным. В С++ действует также унаследованное из С правило, в соответствии с которым значению ложь соответствует число 0, а значению истина – любое число, отличное от 0.

Символьные константы

Символьные литералы – это один или несколько символов, заключенных в апострофы: ’A’, ’я’, ’+’, ’\n’. Перед начальным апострофом может размещаться буква 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-код пробела;

Таблица 1.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

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

#include <iostream>

using namespace std;

int main() {

cout << sizeof 'z' << endl;

cout << sizeof '\n\t' << endl;

cout << sizeof L'\x4F' << endl;

cout << sizeof '\111' << endl;

_getch();

return 0;

}