Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Приведение типов при вычислении значения выраженияСодержание книги
Поиск на нашем сайте
При вычислении выражения, если операнды разного типа, происходит автоматическое преобразование типов к типу операнда высшего ранга. Приоритеты типов в порядке убывания: 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; просмотров: 194; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.119 (0.008 с.) |