Идентификаторы и служебные слова
Идентификатор (имя) – последовательность из букв латинского алфавита, десятичных цифр и символов подчеркивания, начинающаяся не с цифры:
Array, point1, a, point_2, Point_2, refer
Прописные и строчные буквы различаются. Допустимое число символов в имени зависит от версии компилятора. Компиляторы фирмы Borland различают не более 32-х первых символов любого идентификатора.
Ключевые (служебные) слова – это идентификаторы, зарезервированные в языке для специального использования. Ключевые слова Си++:
asm | double | New | Switch |
Auto | else | operator | template |
Break | enum | private | this |
Case | extern | protected | throw |
Catch | float | public | try |
Char | for | register | typedef |
Class | friend | return | typeid |
Const | goto | Short | union |
continue | if | signed | unsigned |
default | inline | sizeof | virtual |
Delete | int | Static | void |
Do | long | Struct | volatile |
while |
Для компиляторов фирмы Borland дополнительно введены ключевые слова:
Cdecl | _export | _loads | _saveregs |
_cs | far | Near | _seg |
_ds | huge | Pascal | _ss |
_es | interrupt | _regparam |
Там же введены как служебные слова регистровые переменные:
_AH | _BH | _CH | _DH | _SI | _SP | _SS |
_AL | _BL | _CL | _DL | _DI | _CS | _ES |
_AX | _BX | _CX | _DX | _BP | _DS | _FLAGS |
Кроме того, идентификаторы, включающие два подряд символа подчёркивания ( __ ), резервируются для дальнейших реализаций Си++ и стандартных библиотек. Идентификаторы, начинающиеся с символа подчёркивания ( _ ), используются в реализациях языка Си. В связи с этим не рекомендуется выбирать идентификаторы, начинающиеся с одного или двух знаков подчёркивания.
Типы данных
Понятие типа данных является одним из ключевых в языке программирования Си++. Любая переменная, константа, объект, объявленный пользователем, неименованный объект, являющийся результатом выполнения какой-либо операции, всегда относится к какому-то типу. Зная тип объекта, всегда можно сказать сколько байт памяти отводится под объект, в каком диапазоне значений могут лежать значения объекта, какое множество операций определено над объектом данного типа, т.е. информация о типе объекта даёт нам представление о его свойствах.
Для объвления и описания типа объекта (переменной) используются следующие ключевые слова (имена типов):
сhar (символьный);
short (короткий целый);
int (целый);
long (длинный целый);
float (вещественный);
double (вещественный с удвоенной точностью);
void (отсутствие значения).
Перед именем символьного и целых типов может стоять ключевое слово signed (знаковый – значения объекта могут меняться от –N до N-1), или unsigned (беззнаковый -значения объекта могут меняться от 0 до 2*N-1), которое позволяет выбрать способ учёта знакового разряда. По умолчанию символьный и целые типы являются знаковыми, т.е., например, записи signed int и int являются полными синонимами, поэтому на практике ключевое слово signed почти не употребляется. Напротив, использование ключевого слова unsigned позволяет сделать символьный и целые типы беззнаковыми, поэтому оно используется довольно часто. В выражении unsigned int и signed int слово int можно опустить, компилятор будет подразумевать его по умолчанию.
У вещественных данных также есть тип, состоящий из двух ключевых слов, long double, точность которого выше чем у double.
Типы, введенные с помощью взятых по отдельности или в допустимом сочетании ключевых слов char, short, int, long, signed, unsigned, float, double, void, называются базовыми (фундаментальными, встроенными).
Таблица фундаментальных типов и определенных для них языком Си++ свойств приведена ниже. Тип данных enum относится к целому типу данных, но иногда его выделяют в отдельный так называемый перечисляемый тип.
Таблица 2.1
Таблица целых и вещественных типов данных
Тип данных | Размер в байтах | Диапазон значений | Примечание – назначение типа |
unsigned char | 0…255 | Небольшие целые числа и коды символов | |
сhar | -128…127 | Очень малые целые числа и ASCII коды | |
short | -32768… 32767 | Упорядоченные наборы целых чисел | |
unsigned int | 0 …65535 | Большие целые и счетчики циклов | |
int | -32768… 32767 | Небольшие целые, управление циклами. | |
int | -32768… 32767 | Небольшие целые, управление циклами | |
unsigned long | 0…4294967295 | Астрономические расстояния | |
long | -2147483648...2147483648 | Большие целые, популяции | |
float | 3.4E-38…3.4E+38 3.333333 | Научные расчёты (7 значащих цифр) | |
double | 1.7E-308…1.7E+308 | Научные расчеты (15 значащих цифр) | |
long double | 3.4E-4932…3.4E+4932 | Финансовые расчёты (19 значащих цифр) |
Из табл. 2.1 видно, например, что объект типа char является объектом символьного типа, занимает в памяти 1 байт и его значения лежать в диапазоне от –128 до 127. Обычно этот тип используется для небольших целых чисел и ASCII кодов.
Количество значащих цифр — это количество цифр, которым представлено число. Так, в числе 2147483648 десять значащих цифр, в числе 0.789 четыре значащих цифры. Следует отметить, что объект типа long имеет больше значащих цифр, чем объект типа float. Поэтому при переходе от типа long к типу float может быть потеряна точность.
Приведем примеры нескольких вариантов объявления с помощью базовых типов переменных (объектов) различных типов:
unsigned char sym; /*В этой строке объявляется переменная sym типа unsigned char. Это значит, что переменная занимает в памяти 1 байт и диапазон её возможных значений лежит в интервале от 0 до 255 (см. табл. 2.1). Sym – это идентификатор (имя ) переменной придуманное программистом. В конце строки программы стоит точка с запятой, символизирующая конец выражения. */
char Sm1, Sm2, Sm3 = 50;/*В строке программы объявлены три переменные типа char (свойства см. табл. 2.1). Sm1, Sm2, Sm3 – идентификаторы (имена) переменных. Переменная Sm3 инициализирована неименованной десятичной константой 50 типа int. Значение переменных Sm1, Sm2 неопределено, т. е. может быть любым числом в допустимом для этого типа диапазоне. */
double pi = 3.14159; /* Объявлена и инициализирована переменная pi типа double. Значение 3.14159 – это неименованная десятичная константа типа double. Как определить тип неименованной константы по её внешнему виду станет ясно при прочтении следующего параграфа. */
По аналогии с приведенными примерами можно вводить переменные и других базовых типов. Более подробное и полное описание таких понятий как объявление, описание, область существования, области видимости переменных отложим на некоторое время.
В 11-ом стандарте Си++ появилась возможность использовать ключевое слово auto, чтобы компилятор автоматически определил тип определяемой переменной по типу инициализирующего выражения. Напрмер, строку кода
double pi = 3.14159;можно переписать в виде:
auto pi = 3.14159;
Компилятор по типу инициализирующего выражения (3.14159 – константа типа double) определит, что программист хочет объявить переменную типа double. Если инициализирующее значение отсутствует, то auto использовать нельзя.
Для переменных это не очень актуально, но чем дальше мы будем изучать язык программирования, тем чаще нам будут встречаться более сложные типы данных.
Например, в строке кода list<char>::const_iterator pos= coll.begin(); мы хотим объявить переменную pos типа list<char>::const_iterator. Эту строку кода можно сделать короче с помощью auto, например, так auto pos= coll.begin(); Компилятор знает, что функция coll.begin(), которая используется в данном примере в качестве инициализирующего выражения, в точку вызова возвращает объетк типа list<char>::const_iterator. Поэтому компилятор в состоянии автоматически определить тип переменной pos.
Константы
Константа – это лексема, представляющая изображение фиксированного числового, строкового или символьного значения.
Константы бывают нескольких групп: целые, вещественные (с плавающей точкой), перечислимые, символьные и строковые.
Компилятор при анализе текста программы определяет по «внешнему виду» и числовому значению, к какой группе относится константа.
Целые константы могут быть десятичными, восьмеричными и шестнадцатеричными.
Десятичная целая константа определена как последовательность десятичных цифр, начинающаяся не с нуля, если это не число нуль. Для компиляторов BC++ версии 3.11 диапазон допустимых целых положительных значений от 0 до 4294967295. Константы, превышающие указанное максимальное значение, вызывают ошибку на этапе компиляции. Отрицательные константы – это константы без знака, к которым применена операция изменения знака. Абсолютное значение отрицательных десятичных констант для BC++ 3.11 не должно превышать 2147483647.
В табл. 2.2 приведены типы, выбираемые компилятором по умолчанию на основании значения констант. То есть, например, если константа лежит в диапазоне от 0 до 32767, то для неё по умолчанию будет выбран тип int.
Таблица 2.2
Дата добавления: 2020-12-11; просмотров: 564;