Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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




Строго говоря, в выражениях лучше использовать операнды одного типа. Но язык С++ допускает преобразование типов, т. e. если операнды оператора принадлежат к разным типам, то они приводятся к некоторому общему типу. Приведение выполняется в соответствии со следующими правилами:

1) автоматически производятся лишь те преобразования, которые превращают операнды с меньшим диапазоном значений в операнды с большим диапазоном значений, поскольку это происходит без какой-либо потери информации, например:

int i_var;

float f_var,summa;

i_var=5;f_var=2.5; summa=i_var+f_var;

2) выражения, не имеющие смысла (например, число с плавающей точкой в роли индекса), не пропускаются компилятором еще на этапе трансляции:

float f; mas [f]=25; // вызывает ошибку трансляции

3) выражения, в которых могла бы теряться информация (например, при присваивании длинных целых более коротким или действительных целым), могут вызвать предупреждение (warning), но они допустимы:

int i; float f; f=3.2;i=f;

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

Конструкция вида (имя типа) Выражение

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

Например: (int)i=2.5*3.2;

Лекция №3. ЛИНЕЙНЫЕ АЛГОРИТМЫ ПРОГРАММ

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

Линейными называются программы, в которых операторы выполняются один за другим с первого до последнего, не повторяясь и не изменяя порядка их выполнения.

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

Основные математические функции, используемые в языке С, представлены в табл. 3.1.Редкая программа обходится без операций ввода/вывода. Язык С++ имеет большой набор функций, осуществляющих ввод и вывод данных различных типов. Наиболее часто используются две из них: printf, scanf, которые предназначены для реализации форматного вывода и ввода данных.

Таблица 3.1. Основные математические функции

Наименование функции Обозначение функции Тип Имя файла описания
возвращаемого значения функции аргумента
Абсолютное значение abs(x) cabs(x) fabs(x) int double float int double float <stdlib.h> <math.h> <math.h>
Арккосинус acos(x) double double <math.h>
Арксинус asin(x) double double <math.h>
Арктангенс atan(x) double double <math.h>
Косинус cos(x) double double <math.h>
Синус sin(x) double double <math.h>
Экспонента ех ехр(х) double double <math.h>
Степенная функция ху pow(x,y) double double <math.h>
Логарифм натуральный log(x) double double <math.h>
Логарифм десятичный logl0(x) double double <math.h>
Корень квадратный sqrt(x) double double <math.h>
Тангенс tan(x) double double <math.h>

Функция printf имеет следующий синтаксис:

printf ("управляющая_строка", [список_аргументов]);

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

Управляющая строка содержит объекты трех типов: обычные символы, выводимые на экран без изменений, спецификации преобразования, каждая из которых вызывает вывод на экран значения очередного аргумента из последующего списка аргументов, и управляющие символьные константы. Каждая спецификация преобразования начинается с символа % и заканчивается символом преобразования. Между ними могут записываться:

· знак "минус", указывающий на то, что выводимый текст выравнивается по левому краю, по умолчанию выравнивание происходит по правому краю;

· строка цифр, задающая минимальный размер поля вывода;

· точка, являющаяся разделителем;

· строка цифр, задающая точность вывода;

· символ l, указывающий на то, что соответствующий аргумент имеет тип long.

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

d - аргумент преобразуется в десятичное представление;

о - аргумент преобразуется в восьмеричное представление;

x - аргумент преобразуется в шестнадцатеричное представление;

с - значением аргумента является символ;

s - значением аргумента является строка символов;

e - значением аргумента является величина типа float или double в форме с плавающей точкой;

f - значением аргумента является величина типа float или double в форме с фиксированной точкой;

g - один из форматов f или e;

u - значением аргумента является целое беззнаковое число;

p - значением аргумента является указатель (адрес).

Таким образом, "управляющая_строка" определяет количество и тип аргументов. Наиболее часто используются следующие управляющие символы:

\a - кратковременный звуковой сигнал;

\n - перевод строки;

\t - горизонтальная табуляция;

\b - возврат курсора на один шаг назад;

\r - возврат каретки.

Функция scanf описывается так же, как и функция printf:

scanf ("управляющая_строка", список_аргументов);

Аргументы scanf() должны быть указателями на соответствующие значения, для этого перед именем переменной записывается символ &. Управляющая строка содержит спецификации преобразования и используется для установления количества и типов аргументов, аналогично функции printf.

Например: printf("i=%d,\nj=%d, a=%6.2f\n,i,j,a);

Если i=1234, j=127, a=86.531, то на экране увидим:

i=1234, так как после печати i стоит символ перевода строки \n

j=127, a=86.53.

Например: scanf ("%d %f %c %s", &i,&a,&ch,r);

Здесь r - строка символов, которая сама является указателем, поэтому перед ней знак амперсанта & не ставится.

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

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




Поделиться с друзьями:


Дата добавления: 2014-11-16; Просмотров: 437; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.012 сек.