6. Основные элементы языка С++
Под элементами языка понимают его базовые конструкции, используемые при написании программ [2]. К ним относятся: алфавит, правила записи констант и идентификаторов, основные типы данных и действия над ними.
6.1. Алфавит
Алфавитом называют совокупность символов, используемых в языке. В С++ они образуют буквы, цифры и специальные символы. В качестве букв используются прописные буквы латинского алфавита от A до Z и с трочные от a до z, а также знак подчеркивания _. В качестве десятичных цифр используются арабские цифры от 0 до 9. Специальные символы в языке С++ применяются для различных целей: от организации текста программы до определения указаний компилятору языка С++. Специальные символы перечислены в табл. 6.1. Таблица 6.1
Символ | Наименование | Символ | Наименование | Символ | Наименование | ||
, | Запятая | Меньше | % | Процент | |||
. | Точка | > | Больше | & | Амперсант | ||
; | Точка с запятой | [ | Левая квадратная | ^ | Крышка | ||
скобка | |||||||
: | Двоеточие | ] | Правая | квадрат- | — | Минус | |
ная скобка | |||||||
? | Знак вопроса | ! | Восклицатель- | = | Знак равенства | ||
ный знак | |||||||
‘ | Одиночная ка- | | | Вертикальная | + | Плюс | ||
вычка | (апост- | черта | |||||
роф) | * | Звездочка | |||||
( | Левая | круглая | / | Наклонная черта | |||
скобка | вправо | (прямой | |||||
слеш) | “ | Двойная кавыч- | |||||
) | Правая | круглая | \ | Наклонная черта | |||
скобка | влево | (обратный | ка | ||||
слеш) | |||||||
Левая | фигурная | ~ | Тильда | ||||
скобка | |||||||
> | Правая фигурная | # | Знак номера | ||||
скобка |
Из символов алфавита формируются лексемы языка [1]: — идентификаторы; — знаки операций; — константы; — разделители.
6.2. Идентификаторы
Идентификаторы используются как имена переменных, функций и типов данных. Они записываются по следующим правилам. 1. Идентификаторы начинаются с буквы (знак подчеркивания также является буквой). 2. Идентификатор может состоять из латинских букв и цифр (пробелы, точки и другие специальные символы при написании идентификаторов недопустимы). 3. Между двумя идентификаторами должен быть, по крайней мере, хотя бы один пробел. 4. Идентификатор может быть произвольной длины, но значимыми являются только первые 32 символа в среде WINDOWS и 8 символов в среде DOS; остальные символы игнорируются .
Правильные идентификаторы | Неправильные идентификаторы |
wiggly | $A^** |
cat | don’t |
HOT_key | HOT-key |
_grab1 | 1grab |
При написании идентификаторов можно использовать как прописные, так и строчные буквы. В отличие от других языков программирования, компилятор языка С++ различает их в записи идентификатора. Для более простого чтения и понимания идентификаторов рекомендуется использовать имена идентификаторов, состоящие из строчных и прописных букв. Каждый идентификатор имеет тип, который устанавливается при его объявлении. Компилятор языка С++ не допускает использование идентификаторов, совпадающих по написанию с ключевыми словами. Например, идентификатор auto недопустим (однако допустим идентификатор AUTO ).
6.3. Переменные и константы
Данные, обрабатываемые компилятором, – это переменные и константы. Переменные – это данные, которые могут изменять свои значения в процессе выполнения программы. Все переменные в языке С++ должны быть описаны явно. Это означает, что, во-первых, в начале каждой программы или функции Вы должны привести список имен (идентификаторов) всех используемых переменных, а во-вторых, указать тип каждой из них. Оператор описания состоит из спецификации типа и списка имен переменных, разделенных запятой. В конце обязательно должна стоять точка с запятой. При описании возможно задание начального значения переменной. Имя переменной – любая последовательность прописных и строчных букв английского алфавита, цифр и символа подчеркивания ‘_’. Имя должно начинаться с буквы или символа подчеркива —
31 ния. Имя может быть произвольной длины, но значимыми являются только первые 32 символа; остальные символы имени игнорируются. Спецификация типа формируется из ключевых слов, указывающих на различные типы данных. Основные типы в C++ подразделяются на две группы: целочисленные типы и типы с плавающей точкой. К целочисленным типам относятся типы, представленные следующими именами основных типов: char, short, int, long . Имена целочисленных типов могут использоваться в сочетании с парой модификаторов типа signed и unsigned. Эти модификаторы изменяют формат представления данных, но не влияют на размеры выделяемых областей памяти. Модификатор типа signed указывает, что переменная может принимать как положительные, так и отрицательные значения. Модификатор типа unsigned указывает, что переменная принимает только положительные значения. Основные характеристики целочисленных типов выглядят следующим образом (табл. 6.2):
Таблица 6.2 | ||||
Тип данных | Байты | Биты | Min | Max |
signed char | 1 | 8 | — 128 | 127 |
unsigned char | 1 | 8 | 0 | 255 |
signed short | 2 | 16 | -32768 | 32767 |
unsigned short | 2 | 16 | 0 | 65535 |
signed int | 2 | 16 | -32768 | 32767 |
unsigned int | 2 | 16 | 0 | 65535 |
signed long | 4 | 32 | -2147483648 | 2147483647 |
unsigned long | 4 | 32 | 0 | 4294967295 |
По умолчанию считается, что данные типов char, int, short int, long используются со знаком. Поэтому ключевое слово signed можно не указывать. Данные типа char используются для хранения символов. Под символом подразумевается одиночная буква, цифра или знак, занимающий только один байт памяти. Переменные типа char могут использоваться как данные со знаком ( signed char ) и как данные без знака ( unsigned char ). Если тип char рассматривается как signed , то старший байт его кода определяет знак. В этом случае диапазон значений типа char – от –128 до + 127. В случае unsigned char все восемь бит рассматриваются как код, а диапазон возможных значений – от 0 до 255. К плавающим типам относятся три типа, представленные следующими именами типов, модификаторов и их сочетаний: float, double, long double. Они используются для работы с вещественными числами, которые представляются в форме записи с десятичной точкой и в «научной нотации». Разница между нотациями становится очевидной из простого примера, который демонстрирует запись одного и того же вещественного числа в различных нотациях .
32 297.7 2.977E2 и ещё один пример… 0.002355 2.355E-3 В научной нотации слева от символа E записывается мантисса, справа – значение экспоненты, которая всегда равняется показателю степени 10. Ниже представлены основные характеристики типов данных с плавающей точкой (табл. 6.3): Таблица 6.3
Тип данных | Байты | Биты | Min | Max |
float | 4 | 32 | 3.4E-38 | 3.4E+38 |
double | 8 | 64 | 1.7E-308 | 1.7E+308 |
long double | 10 | 80 | 3.4E-4932 | 3.4E+4932 |
Константы – это данные, которые устанавливаются равными определенным значениям еще до выполнения программы и сохраняют их на протяжении выполнения всей программы. Имеется 4 типа констант: целые, с плавающей запятой, символьные и перечисляемые. Например, 25 и -5 – целые константы, 4.8 , 5E15, -5.1E8 – константы с плавающей запятой, ‘А’, ‘\0’, ‘\n’,’007’ – символьные константы. Набор символов внутри двойных кавычек: “Это строка ”– есть строковая константа. Целые константы могут быть десятичные, восьмеричные и шестнадцатеричные. Десятичные константы могут принимать значения от 0 до 4.294.967.295. Константы, выходящие за указанные пределы, вызывают ошибку. Отрицательные десятичные константы – это просто константы без знака, к которым применена унарная операция минус. Восьмеричные константы начинаются с символа нуля, после которого следуют восьмеричные цифры (от 0 до 7), например 032. Если восьмеричная константа содержит недопустимые цифры 8 или 9, выдается сообщение об ошибке. Ошибка будет также выдаваться при превышении восьмеричной констан- той значения 037777777777 . Шестнадцатеричные константы начинаются с 0x (или 0X ). Значения ше-
стнадцатеричных констант, | превышающие 0xFFFFFFFF , приводят к ошибке. | |
Символьная константа | – это | один или более символов, заключенных |
в одинарные кавычки, например ‘F’ , | ‘=’ , ‘\n’ . В C++ константа из одного сим- |
вола имеет тип char . Для введения управляющих последовательностей, позволяющих получить визуальное представление некоторых, не имеющих графического аналога символов, используется группа символьных констант, которые начинаются со специального символа обратной косой черты (‘\’). В следующей таблице показаны допустимые управляющие последовательности.
33 | ||
Таблица 6.4 | ||
Последо- | Обозначение | |
ватель- | в ASCII- | Выполняемое действие |
ность | ||
таблице | ||
символов | ||
При выводе на экран вызывает звуковой сигнал | ||
\a | BEL | |
\b | BS | При выводе на принтер и на экран вызывает сдвиг текущей |
позиции влево | ||
\f | FF | Перевод формы. При выводе на принтер вызывает прогон бу- |
маги до начала следующей страницы | ||
\n | LF | При выводе на принтер и на экран переводит строку |
\r | CR | При выводе на принтер и на экран перемещает текущую пози- |
цию на начало строки, не переводит строку | ||
\t | HT | Горизонтальная табуляция |
\v | VT | Вертикальная табуляция |
\\ | \ | Символ обратной косой черты |
\’ | ‘ | Символ одиночной кавычки |
\” | “ | Символ двойной кавычки |
\? | ? | Знак вопроса |
\0oo | Последовательность цифр, начинающаяся с 0, трактуется как код внутреннего | |
представления, заданный в восьмеричной системе счисления числом оо | ||
\xhh | Последовательность цифр, начинающаяся с x , трактуется как код внутреннего | |
представления, заданный в шестнадцатеричной системе счисления числом hh |
Строковые константы образуют специальную категорию констант, используемых для работы с фиксированными последовательностями символов. Строковая константа имеет тип данных array of char и записывается как последовательность произвольного количества символов, заключенных в двойные кавычки: «Это строковая константа!». Нулевая (пустая) строка записывается как » «. Перечисляемые константы представляют собой идентификаторы, определенные в объявлениях типа enum . Эти идентификаторы обычно выбираются как мнемонические обозначения для удобства обращения с данными. Перечисляемые константы имеют целочисленный тип данных. Они могут быть использованы в любых выражениях, в которых допустим целочисленный тип данных. Используемые идентификаторы должны быть уникальными в пределах контекста объявления enum . Значения, принимаемые этими константами, зависят от формата объявления перечислимого типа и присутствия опциональных инициализаторов. Например, в операторе enum сolor < red, yellow, green >; объявляется переменная с именем сolor , которая может принимать константные значения red , yellow или green . 6.4. Определение констант с помощью директивы препроцессора #define
Константы в языке С++ можно задавать либо в явном виде (т.е. указывать непосредственно значение константы), либо использовать идентификатор, ко-