Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Proga (pechat).docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
90.29 Кб
Скачать

15.Преобразование операндов в арифметических выражениях.

Для бинарных операторов операнды разных типов приводятся к «старшему», то есть более длинному типу.

Типы в порядке убывания:

long double → double → float → unsigned long → long → unsigned int → int → char

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

Преобразование младшего целого типа к старшему целому выполняется расширением в старших битах, размножением нуля или размножением знака, преобразуемого значения.

Преобразование char в int, unsigned int, long, unsigned long выполняется размножением нуля, если тип char unsigned, или знака если тип char signed.

Преобразования типа int в long или unsigned long выполняется размножением знака.

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

Преобразование старших целых типов в младшие выполняется отбрасыванием старших байтов.

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

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

- Операции приведения типа (<тип>):

int a=8, b=5, c, d;

float var1, var2;

var1 = a / b; // 1.0

var2 = (float) a/ (float) b; //1.6 –во всех компиляторах

- Оператор запятая

E1, E2

E1 – вычисляется как void выражение, E2 – вычисляется после, определяя тип и результат всего выражения запятой

Е1, Е2, …., Еn – Ei выч-я с лево на право и рез. будет в Еn, во избежание неопределенности надо заключ в круглые скобки при вызове ф-ции:

func(I,(j=1,j+5),k)

Функции преобразования данных ASCII:

atof char -> double atoi char -> int

atol char -> long acvt double -> char

itoa int -> chat ltoa long -> char

16.Сложние объявления и элементы объявления.

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

Объявление состоит из четырёх частей: необязательного спецификатора, базового типа, объявляющей части и, возможно, инициализатора.

<тип> [<мод-ры>] <имя> [<нач_знач>]

Объявляющая часть состоит из имени и операторов объявления. Наиболее часто встречаются следущее операторы объявления:

* указатель

* const константный указатель

& ссылка

[] массив

() функция

Разрешается объявлять несколько имен в одном операторе объявления. Например мы можем объявить две переменных:

int x, y;

Операторы объявления применяются только к ближайшему имени и не относится к соседнем именам в объявления. Например:

int *p, y //int*p; int y;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]