Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Основные типы данных

Читайте также:
  1. I. ОСНОВНЫЕ БОГОСЛОВСКИЕ ПОЛОЖЕНИЯ
  2. I. ОСНОВНЫЕ ЗНАЧЕНИЯ
  3. I. ОСНОВНЫЕ ПОЛОЖЕНИЯ
  4. I. Основные приемы (способы выполнения).
  5. I. ОСНОВНЫЕ ПРИНЦИПЫ ПОЛИТИКИ ПЕРЕМЕН
  6. I. Основные элементы текстового документа
  7. II. Основные факторы, определяющие состояние и развитие гражданской обороны в современных условиях и на период до 2010 года.

 

Идентификаторы

 

Идентификатором называется имя объекта программы, которое

ему дает программист.

Идентификатор может содержать латинские буквы обоих регист-

ров (A-Z,a-z), арабские цифры (0-9) и символ подчеркивания (_).

Рекомендуется выбирать имена, несущие смысловую нагрузку, что

способствует более простому уяснению физического смысла введен-

ной переменной. Ввод в состав идентификаторов символов подчерки-

вания повышает наглядность имени, например, my_program_name го-

раздо легче читать, чем myprogramname.

При выборе идентификатора нужно помнить три простых прави-

ла:

 

1. Первым символом обязательно должна быть буква или

символ подчеркивания.

2. Длина идентификатора не должна превышать 32 символа.

3. Нельзя использовать имена, совпадающие с нижеперечис-

ленными ключевыми (служебными) словами Turbo C.

 

Одноименные прописные и строчные буквы считаются различными

символами, поэтому совершенно различны следующие имена:

 

name Name NAME...

 

Большинство программистов используют в идентификаторах про-

писные буквы только для обозначения имен констант и макросов,

описание которых часто приводится в header- файлах и поэтому яв-

но не присутствует в тексте программы.

Допустимо использование одинаковых имен в различных облас-

тях действия для обозначения разных объектов программы.

 

 

Типы переменных и констант

 

В языке Си любая переменная должна быть явно объявлена пе-

ред ее использованием в программе. Атрибутами объявления являют-

ся класс памяти, тип переменной и ее имя. Допускается при объяв-

лении переменной присваивать ей требуемое численное значение.

Эта процедура называется инициализацией переменной.

Тип переменной однозначно определяет ее длину в байтах и

форму представления численного значения в выделяемых ячейках па-

мяти. Каждой объявленной переменной компилятор отводит необходи-

мое количество смежных байт памяти с конкретным начальным адре-

сом, который используется для доступа к численному значению пе-

ременной.

Достаточно очевидно, что константы (т.е.числа) также должны

различаться по типам, абсолютно идентичным типам переменных. По-

этому при рассмотрении типов мы не будем особо разделять пере-

менные и константы, называя их общим понятием - "данные".

Все типы принято делить на простые и сложные. К простым от-

носятся стандартные базовые типы данных, обозначаемые следующими

ключевыми словами:

 

char - символьные;

int - целые;

float - вещественные;

double - вещественные с удвоенной точностью.

 

Перед ключевыми словами char и int при необходимости можно

записать необязательные модификаторы типа:

 

signed - знаковый;

unsigned - беззнаковый.

 

Они указывают компилятору, как следует интерпретировать

старший бит двоичного кода целого числа. По умолчанию всем целым

переменным приписывается модификатор signed.

 

Символьные данные

────────────────-

 

Символьная константа представляет собой байт ASCII - кода символа. Для символов, имеющих графическое представление, ее обычно записывают как сам символ, заключенный в апострофы, например:

 

'a'

 

Такая запись эквивалентна заданию ASCII-кода символа, точнее - его численного эквивалента. Символы, не имеющие графического представления, записываются, как показано в таблице:

 

┌────────────┬───────────────┬──────────────────────────┐

│ Символьная │ 16-ричное │ Назначение или управ- │

│ константа │ представление │ ляющее воздействие │

├────────────┼───────────────┼──────────────────────────┤

│ \a │ 0x07 │ Звуковой сигнал │

│ \n │ 0x0A │ Переход на новую строку │

│ \r │ 0x0D │ Возврат к началу строки │

│ \b │ 0x5C │ Возврат на одну позицию │

│ \\ │ │ Обратный слэш │

│ \DDD │ │ Восьмеричный код символа │

│ \xHH │ │ 16-ричный код символа │

│ \0 │ 0x00 │ Нулевой байт (NULL) │

└────────────┴───────────────┴──────────────────────────┘

 

 

Символьные переменные описываются с ключевым словом char и занимают ровно один байт памяти. Значением такой переменной обычно является целое число, соответствующее ASCII-коду конкретного символа и лежащее в пределах от -128 до +127. Конечно, только значения от 0 до 127 имеют символьные эквиваленты. Чтобы использовать весь диапазон от 0 до 255, символьную переменную

следует объявить как unsigned.

Символьные переменные считаются в Си принадлежащими к целому типу.

 

Целые данные

───────────-

 

Целой переменной типа int компилятор Borland C++ Builder отводит 4

байта памяти. Старший бит по умолчанию считается знаковым (0-положительное число, 1-отрицательное число). Положительные числа хранятся в такой ячейке в прямом коде,т.е. в обычном двоичном представлении числа. Отрицательные числа

записываются в так называемом дополнительном коде, позволяющем избежать двойственного представления нуля и заменить операцию вычитания операцией сложения.

 

Строго говоря, язык Си поддерживает три подтипа целых переменных, обозначаемых такими ключевыми словами:

 

short int - короткий целый;

int - целый;

long int - длинный целый.

 

Если указано ключевое слово short или long, то слово int можно опустить.

 

Константы целого типа можно записывать в десятичной, восьмеричной или шестнадцатеричной системах счисления. Признаком 16-ричной записи является наличие символов 0x (или 0X) в качестве первых символов. Если запись константы начинается с нуля, то она трактуется как восьмеричная, и в ней допустимы только цифры 0 - 7. В остальных случаях подразумевается десятичная система.

 

Вещественные данные

───────────────────

 

Вещественными в программировании называются числа, имеющие дробную часть. Такие числа компилятор распознает по наличию в записи числа хотя бы одного из двух возможных признаков:

 

- десятичной точки;

- символа e (или E) с последующим показателем степени.

 

Для описания вещественных переменных используются такие ключевые слова:

 

float - вещественный с плавающей точкой (устарело);

double - с удвоенной точностью.

 

Переменной типа double компилятор отводит 8 байт памяти, где ее численное значение хранится в так называемом нормализованном виде. Нормализация состоит в сдвиге значащих бит двоичного кода числа влево или вправо до тех пор, пока целая часть числа не станет равной единице. Разумеется, для сохранения численного значения каждая операция сдвига сопровождается соответствующим изменением двоичного порядка числа.

Но если целая часть нормализованного двоичного числа всегда равна единице, ее можно вообще не хранить в ячейке памяти! Это экономит один "лишний" бит для записи мантиссы, увеличивая точность представления чисел. Конечно, при чтении числа из ячейки памяти такая "неявная единица", естественно, автоматически восстанавливается.

Порядок, полученный при нормализации, перед записью в ячейку памяти несколько видоизменяется. К нему прибавляется фиксированное целое число так, чтобы он всегда был неотрицательным. Такой искусственно смещенный порядок называется характеристикой. Это избавляет от необходимости выделять специальный бит для хранения знака порядка и упрощает процедуру сравнения порядков чисел при выполнении над ними арифметических действий.

Для чисел типа double прибавляется 1023.

Структура ячейки памяти вещественной переменной типа double имеет вид:

 

8 байт

│<--------------------------------------------------->│

│1 бит 11 бит 52 бита │

┌────┬──────────┬───────----──────────────────────────┐

│знак│ Хар-ка │ Мантисса │

└────┴──────────┴───────----──────────────────────────┘

63 62 52 51 0

 

 

В качестве примера рассмотрим запись в такую ячейку числа 15.375:

 

1111.011 - двоичный код числа.

 

Сдвигаем десятичную точку влево на три бита:

 

1.111011 * 2^3 - нормализованное число.

│ ┌───── └──┐

"неявная" │ │ мантисса │ десятичный

единица │ └────────── │ порядок

───────────┘ └──────────

 

Получим из десятичного порядка характеристику:

 

3 + 1023 = 1026 или 100 0000 0010 в двоичной записи.

 

Учитывая, что число положительное, заполняем ячейку памяти:

 

знак хар-ка м а н т и с с а

┌───┬────────────────┬────────────────────────────────────────────────────────────────────┐

│ 0 │ 100 0000 0010 │ 1110 1100 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 │

└───┴────────────────┴────────────────────────────────────────────────────────────────────┘

└─────┘ └──┘ └──┘ └──┘ └──┘ └──┘ └──┘ └──┘ └──┘ └──┘ └──┘ └──┘ └──┘ └──┘ └──┘ └──┘

4 0 2 E C 0 0 0 0 0 0 0 0 0 0 0

 

Итак, если "заглянуть" в ячейку памяти, где хранится число

15.375, то мы "увидим" двоичный код 402EC00000000000h.

 

Приведем параметры основных типов данных:

 

Тип Р Размер в байтах Диапазон чисел
char   от -128 до 127
unsigned char   от 0 до 255
bool   true, false
short   от -32768 до 32767
unsigned short   от 0 до 65535
int   от -2147483648 до +2147483647
unsigned int   от 0 до +4294967295
long   от -2147483648 до +2147483647
unsigned long   от 0 до +4294967295
double   от 1.7Е-308 до 1.7Е+308
long double   от 3.4Е-4932 до 3.4Е+4932

 

 

Из рассмотренных простых типов могут быть построены более сложные типы данных - массивы, структуры, объединения и т.п.

Язык Си позволяет программисту создавать и использовать в программе собственные типы данных на основе стандартных типов, причем на уровень сложности создаваемых типов не накладывается никаких ограничений.

 

 


Дата добавления: 2015-10-16; просмотров: 64 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Висновки| Области действия и видимости переменных

mybiblioteka.su - 2015-2024 год. (0.017 сек.)