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

Булевские константы – это литералы 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;

}








Строковые константы

Строковый литерал – это последовательность символов, заключенная в двойные кавычки. Строка в С++ соответствует типу данных «массив символов» и может содержать любые символы алфавита языка, например: ”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= “Никто не доволен своей \

          внешностью, но все довольны \

           своим умом”

эквивалентна сроке:

 “Никто не доволен своей внешностью, но все довольны своим умом”.

 

Хотя длина строки в С++ практически не ограничена, текст программы не должен выходить за пределы ширины экрана для того, чтобы было удобно читать и распечатывать программу.





Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: