
- •Лексические элементы языка
- •Соглашение об именах
- •Понятие типа данных
- •Определение переменных
- •Правило видимости (scope rules)
- •Классификация типов данных
- •Характеристики базовых типов данных
- •Константные величины
- •Числовые константы
- •Правила определения компилятором констант таковы:
- •Перечислимые константы
- •Символьные (литерные) константы
- •Строковые константы
- •Именованные (символические) константы
- •Преобразования типов Неявные преобразования.
- •Явные преобразования.
- •Примеры явного приведения типов:
- •Пример неявного преобразования типов
- •Процедура подготовки исполняемой программы
- •Пользовательских символических констант
- •Обращение к функциям
Правила определения компилятором констант таковы:
-
Целая константа (т.е. константа, не имеющая десятичной точки или порядка) относится к типу int, если эта кон
станта входит в интервал значений типа int.
-
Если эта константа не входит в интервал значений типа int, например, 37000, то она считается константой типа un
signed.
-
Если же константа не входит в интервал изменения unsigned, она считается константой типа long.
-
Константа с десятичной точкой считается константой типа double, если она помещается в соответствующий интервал изменения.
Перечислимые константы
enum {элемент_1, элемент_2, … };
По умолчанию элементу 1 присваивается значение 0, элементу 2 – значение 1 и т.д.
Это обычные целочисленные константы типа int, которым приписаны уникальные и удобные для использования обозначения.
Примеры:.
enum {one=1, two=2, three=3 };
Соответствует: 1 2 3
enum {zero, one, two=2, three=3 };
Соответствует: 0 1 2 3
enum {ten=10, three=3, four, fife };
Соответствует: 10 3 4 5
enum { two=2, four=two*2 };
Соответствует: 2 4
В результате следующего объявления
enum error {OK, NO_OPEN, NO_CREATE, FALL=5 };
мы получим константы с указанными в списке именами и со значениями 0,1,2 и 5 соответственно.
Символьные (литерные) константы
-
Клавиатурные: ‘1’, ‘t’, ’y’ – клавиатурный символ задается в апострофах;
-
Кодовые – для задания некоторых управляющих и разделительных символов, например, ‘\n’, ‘\t’;
Последовательности литер, начинающиеся со знака \, называют escape -последовательностями.
\a - звуковой сигнал,
\b возврат на шаг (забой),
\f перевод страницы (формата),
\n перевод строки,
\r возврат каретки,
\t табуляция горизонтальная,
\v табуляция вертикальная,
\\ обратная косая черта,
\’ апостроф,
\” двойные кавычки,
\? вопрос.знак,
-
Кодовые числовые – для задания любых ASCII-кодов символов, например, ‘\x1A’ (шестнадцатеричная цифра 1A, ‘\057’ (восьмеричная цифра 57).
Строковые константы
Строки - это последовательность символов, заключенных в двойные кавычки, например: "1997 год".
В С++ строки заканчиваются дополнительным нулевым символом ‘\0’ со значением ноль. Этот символ является признаком конца строковой константы и обычно используется функциями для определения конца строк.
Строки интерпретируются в С++ как массивы символов. Количество символов в таком массиве на единицу больше, чем в изображении строки. Так строка "ссссс" имеет тип char[6].
Пустая строка - это две двойные кавычки без пробела: "", ее тип - char[1].
Для определения текущей длины строк используется функция strlen(s). Она не учитывает завершающий нулевой символ.
В строки можно включать изображения управляющих символов. Например, ‘\n’ - признак перехода на новую строку:
cout << "abcd\n"; // после вывода строки "abcd" выполняется переход
// на следующую строку
cout << "\n\nabcd"; // перед выводом пропускаются две строки
Для подачи звукового сигнала (BEL) используется символ ‘\a’, например: "1998 год\a\n". Чтобы ввести в строку апостроф нужно написать ‘\’. Для включения двойных кавычек используется комбинация "\". Наконец, если в строке должен быть символ \ (обратный слеш), то его надо удваивать. Пример:
"c:\\borlandc\\test\\one.cpp", то есть при указании маршрута обратный слеш должен удваиваться. Заметим, что этого не нужно делать в директиве #include, например:
#include "c:\borlandc\test\one.cpp".
Если строка очень длинная, то ее можно продолжить на следующей строке, но при этом каждая строка должна завершаться двойными кавычками:
"abcde
fgiklmn" // неправильно!
"abcde"
"fgiklmn" // правильно!
Здесь действует правило: если две строки разделены пробелами ( или комментариями, или некоторыми специальными знаками: ‘\n’, ‘\t’ и др.), то компилятор сцепляет их.