Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Приведение типов при вычислении значения выражения↑ ⇐ ПредыдущаяСтр 5 из 5 Содержание книги
Поиск на нашем сайте
При вычислении выражения, если операнды разного типа, происходит автоматическое преобразование типов к типу операнда высшего ранга. Приоритеты типов в порядке убывания: double, float, int, char. Например, в выражении 1.5 - 3 результат вычисленного выражения будет вещественного типа. При делении 3/2 результат 1, 2/3 – результат 0. Для получения вещественного результата, надо использовать явное преобразование типов. Кроме автоматического преобразования может быть выполнено явное преобразование вида: (<имя типа>) <выражение>. Изменить тип операндов можно еще и явно изменить тип одного из них. c= (double)a/b; или с =a/(double)b; (double)3)/2 или 3/(double)2 или 3./2 или 3/2. Результат будет вещественный – 1.5 Если написать (double)(1/3), то результат будет все равно 0, только вещественный - 0.000000 double y=3.25; int x,z; x = (int) y; // значение y будет приведено к целому типу – 3. В операторе присваивания конечный результат приводится к типу переменной, стоящей в левой части присваивания. Неявное приведение типов производится по следующему правилу: Если в выражении участвуют типы char, short, то они приводятся к типу int. Тип float приводится к типу double. Для любой пары операндов, если один из них long double, то другой приводится к long double. В операторе присваивания результат в правой части присваивания приводится к типу переменной в левой части. #include <stdio.h> #include <stdlib.h> int main() { int a=5,b=27; double c=4.8,d; d=++a-(b+=3)/c; printf("d=%f\n",d); return 0; } d=-0.250000 Лекция 5 Подключение библиотек Библиотеки позволяют использовать разработанный ранее программный код в различных программах. Программист может не разрабатывать часть кода для своей программы, а воспользоваться тем, что входит в состав библиотек. В языке программирования Cи код библиотек представляет собой функции, размещенные в файлах, которые скомпилированы в объектные файлы, а те, в свою очередь, объединены в библиотеки. В одной библиотеке объединяются функции, решающие определенный тип задач. Например, существует библиотека математических функций. У каждой библиотеки должен быть свой заголовочный файл, в котором должны быть описаны прототипы (объявления) всех функций, содержащихся в этой библиотеке. С помощью заголовочных файлов программист сообщает, какие библиотечные функции необходимы и как их использовать. Библиотеки бывают двух видов — статические и динамические. Код статических библиотек при компиляции полностью входит в состав исполняемого файла, что делает программу легко переносимой. Код динамических библиотек не входит в исполняемый файл, он содержит лишь ссылку на библиотеку. Если динамическая библиотека будет удалена или перемещена в другое место, то программа работать не будет. С другой стороны, использование динамических библиотек позволяет сократить размер исполняемого файла. Также если в памяти находится две программы, использующие одну и туже динамическую библиотеку, то последняя будет загружена в память лишь единожды. Чтобы подключить к программе библиотеку, надо подключить заголовочный файл (# inckude <имя заголовочного файла. h >). Существуют 15 заголовочных файлов. stdio. h (вв/выв), math. h ( матем. функции ), stdlib. h (генератор случ чисел, функции выделения и освобождения памяти), time (функции для работы с системным временем) и т.д. Ввод/вывод Для организации ввода/ вывода в языке Си используются функции стандартной библиотеки. Для подключения к программе этих функций используется директива препроцессора, например, #include <stdio.h >. Каждая стандартная функция имеет прототип в заголовочном файле. Прототипы функций ввода/вывода находятся в файле stdio.h.. Функция форматированного вывода printf Функция printf() предназначена для преобразования и вывода данных (значений переменных, констант и выражений) в стандартный поток вывода (по умолчанию - на экран) согласно строке формата. Функция printf() возвращает количество (число ) выведенных символов или отрицательное значение в случае ошибки. Функция printf() переводит данные из внутреннего представления в символьное и выводит результат этого преобразования на экран дисплея. При этом имеется возможность вывести данные в определенном виде, т.е форматировать данные. Общий вид: Printf (<”форматная_строка”>,<список_аргументов>); Форматная (управляющая) строка ограничена кавычками и содержит 2 типа объектов. Может включать произвольный текст (последовательность символов), которые копируются в поток вывода, управляющие символы и спецификации преобразования данных. Список (аргументов) вывода может отсутствовать, например: Printf (“Hello world!\n”). Функция вывода в этом примере содержит только форматную строку. В форматной строке могут быть указаны управляющие символы ‘\n, \ t Например, ‘\n’ – перевод курсора на новую строку. Текст, заключенный в кавычки, выводится на экран, а управляющий символ \ n переводит курсор на новую строку. Управляющий символ табуляция \ t. Табуляция находится на 1, 9, 17, 25 позиции Строка формата содержит 2 типа объектов: поясняющий текст, который копируется в поток вывода и спецификацию формата, которая задает правила преобразования и вывод очередного значения из списка аргументов (вывода). Спецификации преобразования данных предназначены для управления формой внешнего представления значений аргументов функции printf (). Каждая спецификация формата начинается с символа % и заканчивается символом типа преобразования. Форматная строка имеет вид: [поясн.текст][ % флажки ширина_поля.точность модификатор и спецификатор] Спецификаций должно быть столько же, сколько объектов в списке вывода. Каждая спецификация формата начинается с символа %. Кроме формата, можно указать дополнительные опции: флаги и модификаторы. Между символом % и спецификатором типа (d,fl, f) могут быть помещены флаги. Флаги: - (знак минус) задает выравнивание аргумента по левому краю его поля; + (знак плюс) требует обязательного знака у выводимого числа; пробел – при отсутствии знака перед числом должен стоять пробел; 0 задает дополнение нулями поля слева до заданной ширины при выводе числа. К спецификаторам формата могут быть добавлены модификаторы длины, которые изменят формат вывода. Например, lf – означает, что аргумент имеет тип long. Для символьных и целочисленных данных может быть задана ширина поля вывода. Для вещественных чисел - ширина поля, точка, точность. По умолчанию вещественные числа выводятся с точностью 6 знаков после десятичной точки. Среди элементов спецификации преобразования обязательными являются только два – символ ‘%’ и спецификатор преобразования. В таблице указаны основные форматы. Спецификаторы формата
Для типа double на вводе используют спецификатор lf. В форматной строке список форматов может быть разделен поясняющим текстом. В список вывода (аргументов) функции printf() включают объекты, значения которых должны быть выведены на экран. Это могут быть выражения, переменные, константы, обращения к функциям. Список форматов должен соответствовать по количеству и типам списку аргументов. Пример: int y = 7; float x = 3.1415; printf(“x = %f\ty = %d\n”, x, y); На экране: Для вывода числовых значений в спецификации преобразования часто используют «ширина_поля» и «точность». Ширина_поля – целое положительное число, определяющее количество знакомест на экране для представления выводимого значения. Для целочисленных данных используется только ширина поля вывода. Точность – целое положительное число, определяющее количество цифр в дробной части внешнего представления вещественного числа (с фиксированной точкой) или его мантиссы (при использовании формы с плавающей точкой). Пример: int y = 7; float x = 3.1415; printf(“x = %.2f\ty = %4d\n”, x, y); На экране: Пример: int a=37,m=5,n=2; double x=178.946, y=12e-9; printf("a=%d\n\n\n x=%f",a,x);
printf("a=%6d\ty=%g",a,y); a выодится в поле 6 знакомест и прижимается к правому краю.
printf("x=%+-10.2f\ty=%e",x,y);
Вывелся знак у числа и число прижалось к левому краю поля вывода из 10 знако-мест. printf("x=%+-10.2f\ty=%g",x,y); Изменили формат с e на g. Число отобразилось в более короткой форме.
Функция форматированного ввода scanf Для ввода данных с клавиатуры в программе используют функцию scanf(). Эта функция преобразует вводимые данные во внутренний формат в соответствие со спецификацией и помещает их в переменные из списка ввода. Функция возвращает количество успешно считанных, преобразованных и помещенных по определенному адресу данных. С помощью этой функции можно ввести данные любого скалярного типа и строки. Scanf (”<форматная_строка>”,<список ввода>); Для функции scanf форматная строка и список аргументов (ввода) обязательны. В форматной строке можно использовать знак % соответствующий вводимому данному спецификатор и знак \ n. Количество и тип спецификаторов форматов в управляющей строке должны совпадать с количеством и типом переменных в списке ввода. При выполнении программы разделителями между вводимыми данными являются пробелы, нажатие клавиши Enter или символ табуляции. Исходные данные, введенные с клавиатуры, после нажатия клавиши Enter помещаются в специально выделенную операционной системой область памяти – в буфер клавиатуры и одновременно отображаются на экране в виде строки ввода. В отличие от функции printf() аргументами для функции scanf() могут быть только адреса объектов программы, обычно это адреса переменных (указатели ). В форматной строке в списке ввода может быть записано несколько аргументов, они перечисляются через запятую: & аргумент 1, & аргумент 2 & аргумент n. Выражение для получения адреса переменной будет таким: &имя_переменной. Знак & это операция вычисления адреса. Например, int x; float y; /* или scanf (“%d%f”, &x, &y);*/ scanf(“\n%d”, &x); scanf(“%f”, &y); Если тип вводимого аргумента double, то спецификатор lf. Пример
|
|||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2020-11-23; просмотров: 128; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.137.176.238 (0.007 с.) |