Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Любая программа, суть которой не есть вывод на экран некоторой текстовой информации, содержит описание переменных. Переменная - это пара “имя” - “значение”. Имени соответствует адрес участка памяти, выделенной переменной, а значением является содержимое этого участка. Именем переменной служит идентификатор. В С++ идентификатор - это последовательность из букв латинского алфавита, десятичных цифр и символов подчеркивания, начинающаяся не с цифры. Прописные и строчные буквы различаются. Примеры идентификаторов:
i, i2, i_2, stroka, STROKA, F_I_O.
На длину различаемой части идентификатора конкретные реализации компилятора накладывают свои собственные ограничения. Например, компилятор фирмы Borland различают не более 32-х первых символов любого идентификатора.
Каждая переменная и каждое выражение в программе имеет тип, определяющий операции, которые могут над ними производиться. Все типы языка С++ делят на основные и производные. Переменные типизируются с помощью описаний. Для описания переменных основных типов используют ключевые слова, содержащиеся в таблице 2.
Описание переменных заданного типа имеет следующий формат:
тип имя1 [иницал._выражение1], имя2 [иницал._выражение2],…; где
тип – один из основных типов (таблица 2);
имя – идентификатор;
инициал._выражение – необязательный инициализатор, определяющий начальное значение соответствующего объекта.
Синтаксис инициализатора переменной:
= инициал._выражение
либо
(инициал._выражение).
Таблица 2. Основные типы данных
Тип данных | Диапазон значений |
char (символьный) | -128…127 |
short (короткий целый) | -32768…32767 |
int (целый) | -32768…32767 |
long (длинный целый) | -2147483648…2147483647 |
unsigned char (беззнаковый символьный) | 0…255 |
unsigned int (беззнаковый целый) | 0…65535 |
unsigned long (беззнаковый длинный целый) | 0…4294967295 |
float (вещественный) | 3.4Е-38…3.4Е+38 |
double (вещественный с удвоенной точностью) | 1.7Е-308…1.7Е+308 |
long double (длинный вещественный с удвоенной точностью) | 3.4Е-4932…3.4Е+4932 |
Приведем несколько примеров.
int i,j,k,n=10; // Определены целые переменные i,j,k,n и только n
//инициализирована значением 10;
char simbol1= ‘\n’;// Определена символьная переменная simbol1 co
// значением ‘\n’
double pi=3,1415926535897932385; // Определена вещественная
//переменная pi с удвоенной точностью co
//значением 3,1415926535897932385
К основному типу можно применять спецификатор const. Это дает тип, имеющий те же свойства, что и исходный тип, за исключением того, что значение переменных типа const не может изменяться после инициализации. Например,
const float pi = 3,14;
const char plus = '+';
В данном случае говорят, что описаны константы. Символ, заключенный в одинарные кавычки, является символьной константой. Константа должна инициализироваться при описании. Для переменных инициализация необязательна, но настоятельно рекомендуется. Оснований для введения локальной переменной без ее инициализации очень немного.
Кроме типов, приведенных в таблице 2, к основным типам относят логический тип bool, перечислимый тип enum и тип void (отсутствие значения).
Логические переменные (типа bool) могут принимать одно из двух значений: истина (true) или ложь (false). Логические переменные используются для выражения результатов логических операций. Например,
bool b1=a==b; //= означает присваивание, == проверка равенства
Если а и b имеют одинаковые значения, то b1 будет равно true, в противном случае – false. По определению true имеет значение 1 при преобразовании к целому типу, а false ‑ 0. При преобразовании целочисленного значения к логическому типу 0 преобразуется в false, а число, отличное от нуля – в true.
Перечислимый тип, который вводится с помощью служебного слова enum, по существу описывает целые константы (типа int), которым приписаны уникальные и удобные для использования имена. Например,
enum {one=1,two=2,three=3};
Здесь one, two, three – произвольным образом выбранные программистом идентификаторы для обозначения констант 1,2,3. После такого определения в программе наряду, например, с константой 2 можно использовать ее обозначение two. Если в определении перечислимых констант опустить знаки “=” и не указывать числовых значений, то они будут присваиваться идентификаторам по умолчанию следующим образом: самый левый в фигурных скобках идентификатор получит значение 0, а каждый последующий увеличивается на 1. Имена перечислимых констант должны быть уникальными, однако к значениям констант это не относится. Одно значение могут иметь разные константы. Для перечислимых констант можно ввести имя типа, соответствующего приведенному списку констант, например, определение
enum week {sunday, monday, tuesday, wednesday, thursday, friday, saturday};
не только определяет константы Sunday==0, Monday==1,…, но и вводит перечислимый тип с именем week, который может в дальнейшем использоваться в определениях и описаниях других типов.
Тип void можно использовать только для определений некоторых производных типов. Объектов типа void не существует, то есть описание void i; недопустимо.
Из основных типов с помощью операций *, &, [], () и механизмов определения структурированных типов (классов, структур, объединений) можно конструировать множество производных типов. Приведем несколько примеров:
int ar [5]; - массив, состоящий из пяти объектов типа int, доступ к которым обеспечивают индексированные переменные ar[0], ar[1], ar[2] ar[3], ar[4];
char t[]= “текст”; – массив, состоящий из пяти объектов типа char;
void a1 (double); – функция, не возвращающая никакого значения и имеющая аргумент типа double;
char *a2; – указатель на объекты типа char (значением указателей являются адреса участков памяти, выделенных для объектов конкретного типа);
long a3;
long &a4=a3; – инициализированная ссылка на объект типа long;
int *a5[];– массив указателей на объекты типа int;
int (*a5)[]; – указатель на массив объектов типа int.
Обратите внимание, что строка может быть описана как массив типа char. Подробно назначение и синтаксис таких типов данных как указатели, массивы, ссылки, структуры данных и классы будет описаны в следующих главах пособия.
Кроме того, используя спецификатор typedef,можно вводить в программе удобные обозначения для сложных описаний типов. Например,
typedef unsigned char UC;
UC simbol;
Здесь вводится новый тип UC и переменная этого типа simbol, значениями которой являются беззнаковые числа в диапазоне от 0 до 255.
Для определения размера (в байтах) области памяти, выделяемой для переменной определенного типа, в С++ используется операция sizeof. Разрешены два формата операции
sizeof (имя_переменной)
или
sizeof (тип данных).
Например, пусть определена переменная int i. Тогда операция sizeof(i) определит, сколько байт выделено для переменой i.
Соотношение между основными типами можно записать так:
1==sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) <=sizeof(float) <= sizeof(double)
Каждый, описанный в программе объект (в частности, переменная), имеет следующие основные характеристики:
- область действия идентификатора – эта та часть программы, в которой идентификатор может быть использован для доступа к связанному с ним объекту (обычно имя переменной действует с места ее определения и до конца блока {}, в котором она была определена);
- видимость объекта (данное понятие необходимо в связи с возможностью повторных определений идентификатора внутри вложенных блоков);
- продолжительность существования, которая определяет период, в течение которого идентификаторам в программе соответствуют конкретные объекты в памяти. Определены три вида продолжительности: статическая, локальная и динамическая;
- класс памяти – определяет размещение объекта в памяти и продолжительность его существования.
Дата публикования: 2015-10-09; Прочитано: 236 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!