Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование / WORD / Лекции по ЯП (часть 3).doc
Скачиваний:
140
Добавлен:
15.04.2015
Размер:
1.34 Mб
Скачать

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

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

К каждой двуместной арифметической операции применяются следующее правило: операнды разных типов приводятся к более длинному типу.

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

long double

double

float

long long

unsigned long

long int

unsigned int

signed int

signed char

При этом:

  1. переменные char и short преобразуются в int. a float-в double;

  2. если один из операндов double, то другой преобразуется в double. Результат операции - double;

  3. если один из операндов типа long, другой преобразуется в long. Результат-long;

  4. если один из операндов unsigned, другой преобразуется в unsigned. Результат-unsigned;

  5. если операнды типа int. результат-int.

Числа с плавающей точкой перед выполнением операции преобразуются в double. Все операции над такими числами в языке Си выполняются с двойной точностью.

Преобразования производятся и в случае операции присваивания, значение операнда справа от знака < = > преобразуется к типу операнда слева от этого знака.

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

char и short - в int,

float - в double.

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

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

(typе) exp

где type-тип, а exp-выражение.

Основные средства ввода-вывода на Си Понятие потока

Поток представляет собой последовательность байт данных.

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

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

Каждый поток в Си связан с файлом. В этом контексте термин файл не относится только к файлам на дисках. Скорее это промежуточный объект между потоком ввода или вывода, с которым работает программа, и реальным физическим устройством, фак­тически выполняющим ввод-вывод данных.

Потоки бывают двух разновидностей: текстовые и двоичные.

Текстовые потоки организованы в виде строк до 255 символов длиной с завершающим символом конца строки. Некоторые символы в текстовых потоках воспринимаются как специальные, т.е. имеющие управляющие функции.

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

Стандартные потоки

В языке Си стандарта ANSI имеется три стандартных потока, известных также под назва­нием стандартных файлов ввода-вывода. В системе DOS или Windows на IBM-совместимом персональном компьютере имеется еще два дополнительных стандартных потока. Эти потоки автоматически открываются при запуске программы и закрываются при ее завершении.

Имя

Поток

Устройство

stdin

Стандартный поток ввода

Клавиатура

stdout

Стандартный поток вывода

Экран

stderr

Стандартный поток ошибок

Экран

stdprn

Стандартный поток печати

Принтер (LPT1:)

stdaux

Стандартный вспомогательный поток

Последовательный порт (СОМ1:)

Последние два потока поддерживаются только в Windows и DOS. Они нe определены в стандарте ANSI.

При работе с функциями printf () или puts() в работу включался поток stdout.

При вызове gets() или scanf() мы работали с потоком stdin.