- •Руденко т.В. Сборник задач и упражнений по языку Си. ( учебное пособие для студентов II курса )
- •Предисловие
- •Типы, операции, выражения
- •Управление
- •3.1 Синтаксис и семантика операторов языка Си
- •Обработка числовых данных
- •Обработка символьных данных
- •Функции и структура программы
- •Указатели и массивы
- •Структуры, объединения
- •6.1 Основные сведения
- •6.2 Структуры и функции. Указатели на структуры.
- •6.3 Структуры со сылками на себя
- •Ввод-вывод
- •7.1 Стандартный ввод-вывод
- •7.2 Работа с файлами
- •Интерфейс с системой unix
- •Низкоуровневый ввод-вывод
- •Процессы, сигналы
- •8.2.1 Конвейер, перенаправление ввода-вывода
- •8.2.2 Сигналы. Фоновые процессы.
- •Задания практикума
- •Свойства транслятора
- •Калькулятор
- •Моделирование работы интерпретатора shell
- •Приложения
- •Библиотека стандартных функций языка с
- •Функции работы со строками
- •Функции проверки класса литер
- •Ввод-вывод
- •Операции над файлами
- •Форматный вывод
- •Литеры-спецификаторы и их смысл при выводе
- •Форматный ввод
- •Литеры-спецификаторы и их смысл при вводе
- •Функции ввода-вывода литер
- •Функции позиционирования файла
- •Математические функции
- •Функции общего назначения
- •Дальние переходы
- •10.2 Фрагменты стандарта языка Си
- •10.2.1 Классификация типов
- •10.2.2 Приоритеты и порядок выполнения операций
- •10.2.3 Арифметические преобразования при выполнении арифметических операций вида X op y
- •10.2.4 Арифметические преобразования при выполнении присваивания и явного приведения
- •10.2.6 Явное приведение ( тип т ) X
- •10.2.7 Адресная арифметика
- •10.3 Системные функции unix
- •10.3.1 Базисные средства ввода-вывода
- •10.3.2 Дополнительные средства ввода-вывода
- •10.3.3 Процессы, транспортеры, сигналы
- •Литература
- •Содержание
10.2.3 Арифметические преобразования при выполнении арифметических операций вида X op y
1. если есть операнд типа short или signed char, то он преобразуется к int; если есть операнд типа char, unsigned char или unsigned short, и все значения этого типа могут быть представлены как int, то он преобразуется к int; иначе - к unsigned int. Это преобразование называется «целочисленное расширение» (promoting ).
если после выполнения п.1 операнды имеют различные типы, то осуществляется их приведение к общему типу. Общим для двух типов ( кроме случая «unsigned int - long» ) является тот, который расположен позже в последовательности int, unsigned int, long, unsigned long, float, double, long double.
Если операнды имеют типы unsigned int и long, и все значения типа unsigned int могут быть представлены как long, то общим типом является long; иначе - unsigned long. Это преобразование называют «согласование типов» (balansing).
3. после этого выполняется арифметическая операция; тип результата - это тип, к которому были приведены оба операнда.
10.2.4 Арифметические преобразования при выполнении присваивания и явного приведения
M-битового представления величины X к N-битовому представлению
преобразование N < M N == M N>M
-------------------------------------------------------------------------------------------------------
знаковое целое отсечение значение значение
к старших сохраняется сохраняется
знаковому целому N-M бит
-------------------------------------------------------------------------------------------------------------
беззнаковое целое зависит от если x 0,знач.сохр. значение
к реализации иначе зависит от сохраняется
знаковому целому реализации
-------------------------------------------------------------------------------------------------------------
вещественное если |x|<2N-1,то если |x|<2N-1,то если |x|<2N-1,то
к trunc(x) trunc(x) trunc(x)
знаковому целому иначе зависит иначе зависит иначе зависит
от реализации от реализации от реализации
------------------------------------------------------------------------------------------------------------
знаковое целое если x0, то x%2N если x0 если x0
к иначе зависит знач. сохр. знач. сохр.
беззнаковому целому от реализации иначе x+2N иначе x+2N
-------------------------------------------------------------------------------------------------------------
беззнаковое целое значение значение
к x%2N сохраняется сохраняется
беззнаковому целому
------------------------------------------------------------------------------------------------------------
вещественное если 0x<2N если 0x<2N если 0x<2N
к trunc(x) trunc(x) trunc(x)
беззнаковому иначе зависит иначе зависит иначе зависит
целому от реализации от реализации от реализации
------------------------------------------------------------------------------------------------------------
знаковое целое сохр. знак, значение значение
к сохр. старшие сохраняется сохраняется
вещественному N-1 бит
------------------------------------------------------------------------------------------------------------
беззнаковое целое знак +, знак +, значение
к сохр. старшие сохр. старшие сохраняется
вещественному N-1 бит N-1 бит
------------------------------------------------------------------------------------------------------------
вещественное сохр. старшие значение значение
к N-1 бит сохраняется сохраняется
вещественному
10.2.5 Неявное приведение типов в операторе присваивания X = Y
тип X тип Y тип результата
-------------------------------------------------------------------------------------------------------------
арифметический арифметический тип X
-------------------------------------------------------------------------------------------------------------
указатель, структура тип X тип X
либо объединение
-------------------------------------------------------------------------------------------------------------
указатель на const T указатель на T либо тип X
на const T
-------------------------------------------------------------------------------------------------------------
указатель на volatile T указатель на T либо тип X
на volatile T
-------------------------------------------------------------------------------------------------------------
указатель на const volatile T указатель на T, либо на тип X
const T, либо на volatile T,
либо на const volatile T
-------------------------------------------------------------------------------------------------------------
указатель на void указатель на T тип X
-------------------------------------------------------------------------------------------------------------
указатель на T указатель на void тип X
-------------------------------------------------------------------------------------------------------------
указатель на T целое значение 0 тип X
