Переменные. Основные типы данных
Задания
Каждому студенту рекомендуется выполнить хотя бы одно из упражнений 1–10.
Используя esc-последовательности, выведите на экран следующий текст.
1. Это строка,
иначе –“стринг”,
иначе – “строковый литерал”
2. Это звуковой
сигнал!
(Сопроводите вывод строки звуковым сигналом)
3. Это строка?
“Да!”
4. Вывод очень- очень- очень- очень- очень-очень- очень- очень- очень- очень длиной строки можно обеспечить, используя
символ \
5. “ – это двойные кавычки
‘ – это апостроф
6. Это “строка”?
Это “строка”!
(Используя символ возврата на шаг, во второй строке удалите восклицательный знак)
7. Это строка?
Это строка!
(Замените слово “Это” во второй строке словом “Да”, используя возврат каретки)
8. \\Это комментарий?
//Нет, это комментарий
9. Используя шестнадцатеричные коды символов, выведите на экран текст: “Это строка”
10. Используя восьмеричные коды символов, выведите на экран текст: “Это строка”
11. Используя шестнадцатеричные коды символов, выведите на экран текст: “Hello, world”
12. Используя восьмеричные коды символов, выведите на экран текст: “Hello, world”
Переменные. Основные типы данных
Любая программа, суть которой не есть вывод на экран некоторой текстовой информации, содержит описание переменных. Переменная - это пара “имя” - “значение”. Имени соответствует адрес участка памяти, выделенной переменной, а значением является содержимое этого участка. Именем переменной служит идентификатор. В С++ идентификатор - это последовательность из букв латинского алфавита, десятичных цифр и символов подчеркивания, начинающаяся не с цифры. Прописные и строчные буквы различаются. Примеры идентификаторов:
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; просмотров: 1028;