Кто такая медуница в незнайке. Персонажи книг о незнайке
Тема 1. 2. Концепция типа данных
Понятие переменной
В любой программе, обрабатывающей данные, в качестве операндов в выражениях используются переменные. Часто определяют переменную как пару “имя” - “значение”. Имени соответствует адрес участка памяти, выделенной переменной, а значением является содержимое этого участка.
Переменная - это именованная область памяти компьютера, выделяемая для хранения конкретных данных, значение которых в общем случае может изменяться в ходе выполнения программы.
Описание переменных в программе имеет следующий формат:
Рассмотрим каждый элемент этого описания.
Имя – идентификатор;
Каждая переменная, константа, функция, каждое выражение в программе, написанной на языке высокого уровня, имеет определенный тип . Данные разных типов хранятся и обрабатываются по-разному.
Тип данных определяет:
Внутреннее представление данных в памяти компьютера;
Операции и функции, которые можно применять к объектам этого типа;
Множество значений, которое могут принимать величины этого типа.
Все типы языка С++ делят на основные и производные (составные) .
Основные типы данных
В языках программирования к основным типам данных относят типы данных для хранения чисел (целочисленный тип, вещественный тип) и символов.
В языке С++ определено семь основных типов данных: шесть - для представления целых, вещественных, символьных и логических величин и один специальный тип void. Для описания шести основных определены следующие ключевые слова:
int –целый,
char, wchar_t – символьные,
float, double – вещественные,
bool – логический.
Кроме того, существуют четыре спецификатора, уточняющих внутренне представление и диапазон значений стандартных типов:
short - короткий,
long - длинный,
signed - знаковый (старший бит интерпретируется как знаковый, 0 – положительное, 1-отрицательное),
unsigned - беззнаковый.
Целые, символьные и вещественные типы называют также арифметическими типами.
Примеры описания переменных:
int a,b;//две переменные целого типа
float summa;// переменная вещественного типа
Рассмотрим основные типы подробнее.
Под переменнуюцелого типа (int) отводится 2 или 4 байта (для 16-разрядного и 32-разрядного процессор соответственно). short int – 2 байта, long int – 4 байта. Константам приписывается тип в соответствии с их видом. По умолчанию целые константы интерпретируются как short и signed. Для изменения этой трактовки можно использовать суффиксы – L,l,U,u. Например, 8L, 71u.
Символьный тип (char)– 1 байт. (Для wchar_t – зависит от реализации, обычно 2 байта).
Рассмотрим внутреннее представление диапазон значений на примере типа char.
Самое маленькое беззнаковое число длиной в один байт 00000000 2 =0
Самое большое беззнаковое число длиной в один байт 11111111 2 =255.
Следовательно, тип беззнаковый тип char позволяет хранить 256 различных символа с кодами от 0 до 255.
Самое маленькое положительное число длиной в один байт 00000000 2 =0
Самое большое положительное число длиной в один байт 01111111 2 =127
Самое большое отрицательное число длиной в один байт 11111111 2 =-1
Самое маленькое отрицательное число длиной в один байт 10000000 2 =-128
Напомним, что для получения абсолютного значения отрицательного числа его инвертируют, то есть заменяют 0 на 1, 1 на 0 и добавляют единицу. Например, отрицательное число 10000000. Инвертируем – 01111111. Прибавляем 1
Следовательно, тип знаковый тип char позволяет хранить 256 различных символа с кодами от -128 до 127.
Логический тип (bool) - 1 байт. Значение величин этого типа либо истина (true или 1 ), либо ложь (false или 0 ). Любое нулевое значение интерпретируется как ложь, любое ненулевое -как истина.
Вещественный тип (float, double, long double). Внутренне представление вещественных величин состоит из двух вещей – мантиссы и порядка. Например 148,35 можно представать как 1,4835*10 2 , где 1,4835 – мантисса, 2- порядок. Мантисса >1 и < 2. Длинна мантиссы определяет точность числа, а длина порядка его диапазон. Для float отводится 4 байта = 1 знак + 8 порядок + 23 мантисса). Так как старшая цифра мантиссы =1, то она не хранится. Для double отводится 8 байт = 1 знак+11 порядок+52 мантисса. Константы вещественного типа по умолчанию имеют тип double. Для его изменения можно использовать суффиксы F,f,L,l.
Тип void – это специальный тип, множество значений этого типа пусто. Он не используется при описании переменных.
Кроме того, использую спецификатор typedef можно вводить удобные описания для сложных типов. Например,
typedef unsigned char UC;
UC symbol; // symbol это переменная типа UC, то есть беззнаковая символьная
Продолжим рассматривать синтаксис описания переменных:
[класс памяти]тип имя1 [иницал._выражение1], имя2 [иницал._выражение2],…;
Для того чтобы понять, что такое класс памяти введем несколько определений.
Каждый программный объект в частности переменная характеризуется такими параметрами как
Область действия;
Область видимости;
Время жизни (продолжительность существования).
Область действия - это часть программы, в которой идентификатор может быть использован для доступа к переменной. Если переменная описана внутри блока, то она называется локальной и область ее действия от точки описания и до конца блока. Если переменная описана вне блока, то переменная называется глобальной и область ее действия – от точки описания и до конца файла.
Область видимости - это часть программы, из которой возможен обычный доступ к переменной. Чаще всего область видимости совпадает с областью действия, но бывают исключение - если во вложенных блоках используются переменные с одинаковыми имена (внешняя переменная в этом случае невидима).
#include