Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Комплексное пособие Си.pdf
Скачиваний:
57
Добавлен:
12.03.2015
Размер:
1.57 Mб
Скачать

double

x1,x2;

/* вещ. числа двойной точности*/

char

simv;

/* символ */

int

i,j;

/* целые числа */

long

summa;

/* длинное целое */

short

k1,k2;

/* короткие целые */

unsigned

count;

/* беззнаковое целое

 

 

(неотрицательное) число */

Объем памяти, занимаемой данными различных типов, зависит от типа компьютера, операционной системы и конкретной реализации языка Си.

При описании переменной можно ее инициализировать, например:

int k = 0; /* k присваивается начальное значение 0 */ char s = 'a';

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

Символы (char) - множество символов, определенных реализацией языка, например, набор знаков кода ASCII. Определяется следующим образом:

char x,y,ch; char a,b,d;

Значения знаков хранятся как целые числа, соответствующие, например, ASCII. Таким образом, символы можно рассматривать как целые числа и наоборот.

Целые - в зависимости от объёма памяти, отводимой для представления значений, могут быть типа int, short int или просто short и long int (просто long), т.е.

int i,n;

short int low,a; long int b,c,d;

Если используется число без знака, то переменной можно присвоить тип unsigned int - беззнаковый.

Перечисляемые типы

Ранее отмечалось, что тип - это множество значений плюс операции. Для перечисляемых типов множество значений каждый раз может быть

19

своим, поэтому вначале определяется имя перечисляемого типа, а затем переменные, т.е.

enum <имя перечисл_типа> {<множество значений>};

enum <имя перечисл_типа> <идентефикаторы>

Пример:

enum color {red,green,blue}; enum color x,y;

Идентефикаторы из множества значений представляются целыми числами, т.е. reed, green, blue в машинном представлении - целые числа.

В настоящее время в языке C перечисляемые переменные и константы рассматриваются как переменные и константы типа int. Следовательно, ошибочное использование перечисляемых значений в качестве целых чисел не может быть обнаружено компилятором C, например, бессмысленное выражение red + blue не будет считаться ошибкой.

Вещественные типы

Существует 4 типа с плавающей точкой: float (обычная точность), single (одинарная точность), double (двойная точность), extended (повышенная точность):

float x,y; double a,b;

Тип void (пустой)

С его помощью представляется пустое множество значений. Этот тип используется:

1)для указания типа функций, не возвращающих значений, т.е. функций, используемых в качестве процедур;

2)для указания того, что значение выражения не будет использовано; оно вычисляется только для получения побочных эффектов.

Вобщем, применение void необязательно, но иногда желательно (чтобы не было сообщений об ошибке).

20

Булевский тип - в языке Си нет булевских значений, вместо них используются целые значения. Нуль - логическое значение false (ложь), true - ненулевые значения.

Производные типы.

Массивы - это упорядоченное множество однотипных элементов. Свойства:

1)у массива одно имя;

2)каждый элемент имеет свой номер;

3)в языке Си все элементы массива нумеруются с 0, таким образом

0,1,2,....

4)С каждым элементом массива можно делать все, что с обычной переменной этого типа.

Описание:

<тип> <имя_массива> [n1][n2]...[nk] - это пример к - мерного массива. Примеры:

int a[5],b[3,3]; float c[2,6,4]; char d[2,2];

Доступ к отдельному элементу обозначается [ ], т.е. a[3], b[2,1], c[1,1,1]. Т.к. индексы нумеруются с нуля, то индекс последнего элемента массива на единицу меньше. Например, a[4] - последний элемент массива a.

Указывая только первые p индексов, можно ссылаться на p - мерный подмассив к - мерного массива (pk).

Структуры

То же, что и запись в Паскале. Состоит из компонент любых типов, за исключением функций. Тип структуры указывается так:

struct

{

<список описаний>

}

Пример:

21

struct { double x,y;

} a,b,c[9];

т.е. переменные а и b описываются как структуры, каждая из которых состоит из 2-х компонент. Каждая компонента типа вещественное число с плавающей точкой двойной точности. Переменная с описывается как массив из 9 структур.

Пример:

struct {

int year;

short int month,day; } date1, date2;

т.е. каждая из переменных date1, date2 состоит из 3-х структур.

Доступ к компонентам структуры: S.C, где S - имя структуры, С - имя компоненты:

date1.year, date1.month, date1.day.

Объединение

Подобно структуре, однако в каждый момент времени может использоваться (или являться активным ) только один из его компонент.

union {

описание компоненты а1;

....................

описание компоненты аn;

}

Для всех компонент выделяется одна и та же область памяти, поэтому доступ к этой области возможен с использованием любой из компонент. Очевидно, что компонент должен выбираться так, чтобы полученный результат не был бессмысленным.

Объединения применяются для:

1) минимизации используемого объема памяти, если в каждый момент времени только один объект из множества является активным;

22