Этапы разработки программы. Разработка или выбор алгоритма решения поставленной задачи. Оформление документации на программу, страница 13

Неявное преобразование типов.

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

1)  Если один из операндов в выражении имеет тип long double, то остальные тоже преобразуются к типу long double

2)  В противном случае, если один из операндов в выражении имеет тип double, то остальные тоже преобразуются к типу double

3)  В противном случае, если один из операндов в выражении имеет тип float, то остальные тоже преобразуются к типу float

4)  В противном случае, если один из операндов в выражении имеет тип unsigned long, то остальные  тоже   преобразуются к типу unsigned long

5)  В противном случае, если один из операндов в выражении имеет тип long, то остальные тоже преобразуются к типу long

6)  В противном случае все операнды преобразуются к типу int.

Неявное преобразование выполняется при присваивании, тип значения, которое присваивается, преобразуется к типу переменной, получающей это значение.

Замечание:  Неявное преобразование float в int осуществляется отбрасыванием дробной части.

Пример:  int x;

float y = 3.9;

x = y; //à3

y = x; //à3.0

Преобразование double во float   выполняется округлением. Преобразование длинных целых к более коротким <intàchar> - отбрасываются лишние старшие биты.

Явное преобразование типов.

Исполняется с помощью операции приведения типа, имеющей следующий синтаксис:

(<имя типа>) <выражение>

1)  float y=3.9;

int x;

x=(int)y;

2)  int x=5;

float y;

а)    y=(float)x/2  результат 2.5

б)    y=(float)(x/2)  результат другой, т.к. сначало выполняется х\2àрезультат типа

int т.к. х и 2 типа int =>у=2.

§12. Структурные типы данных

12.1 Массивы

Массив - один из структурных типов данных, все элементы которого имеют один и тот же тип и расположены в оперативной памяти в смежных областях.

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

PASCAL: var<имя массива>[<тип индекса>]of<тип элементов>

Пример:  var A : array[1..100] of real;

Ограниченный целый тип 1..100 определяет количество элементов массива (100) и их упорядоченность от 1 до 100.

C: <тип> <имя массива>[<размер>]

Пример: float A[100]; // Размер должен быть задан константной.

Обращение к элементу одномерного массива (доступ) в языке C и PASCAL организуется следующим образом:

<имя массива>[<индекс элемента>]

Индекс первого элемента массива в языке С равен 0. В языке C при объявлении массива его можно инициализировать.

<тип элементов><имя массива>[<размер>]=<список инициализаторов>.

<Список  инициализаторов> - последовательность констант, разделённых запятыми. Если в списке инициализаторов меньше элементов, чем размерность массива, то оставшиеся элементы неявно инициализируются нулями.

Пример:   int vect[3]={123};

Компилятор отводит под массив память размером (sizeof(<тип><размер массива>)) байтов.

Синтаксис объявления многомерного массива:

PASCAL: var <имя массива> : array[<тип индекса>,<тип индекса>] of <тип элементов>;

Пример: var MATR : array[1..10,1..20] of real;

C:  <тип> <имя массива> [<размер1>][<размер2>]…

Пример:

#define n 3

#define m 2

int matr[n][m] = {{1,2},{3,4},{5,6}};

int matr[3][2] = {{0}}

Доступ к элементу многомерного массива в языке PASCAL:

<имя массива>[<индекс 1><индекс 2>…]

Доступ к элементу многомерного массива в языке C:

<имя массива>[<индекс 1>][<индекс 2>]…

12.2 Комбинированные типы данных

К комбинированным типам данных относятся в языке PASCAL – записи, а в языке C – структуры и объединения.

12.2.1 Записи в языке PASCAL

Запись - это пользовательский тип данных, элементы которого могут иметь различный тип.

Язык PASCAL дает возможность программисту описывать в программе типы данных. Для этих целей служит раздел описания типов: type <имя типа>=<тип>;