Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Операции , выражения и операторы.Содержание книги
Похожие статьи вашей тематики
Поиск на нашем сайте Выражения используются для получения новых значений переменных на основе уже имеющихся данных. Переменные и константы – простейшие частные случаи выражения. Более сложные выражения строятся из констант, переменных, имён функций, соединённых при помощи знаков операций с использованием, быть может, круглых скобок. Самая популярная операция – присваивание:
V = выражение
Если после “ выражения” поставить точку с запятой (;), то такая конструкция превращается в оператор присваивания, который вычисляет “ выражение” и полученное значение записывает в память компьютера, обозначенную именем V. Операция присваивания может применяться в выражениях наряду с прочими операциями.
Пример. int a, b, c = 5; a = (b = c + 1) + 7; cout << a << “ “ << b;
Результат работы этого фрагмента: 13 6
В зависимости от используемых знаков операций различают арифметические операции, операции отношения и логические операции.
А р и ф м е т и ч е с к и е о п е р а ц и и.
Основные бинарные арифметические операции: + (сложение), – (вычитание), * (умножение), / (деление) и % (вычисление остатка от деления целых чисел). Все знаки операций в выражении должны быть записаны явно. При делении любых целых чисел дробная часть отбрасывается. Операцию % продемонстрируем на следующем примере. Требуется ввести натуральное трехзначное число и напечатать его цифры в обратном порядке.
#include <iostream.h> #include <conio.h>
int main() // в стандарте C++ рекомендуется использовать заголовок вида: // int main() либо даже int main(void)
{ clrscr(); // Очистка экрана int a, z1, z2, z3; cout<<"Введи трёхзначное число "; cin>>a; // ввод числа z3=a%10; cout<<z3; // последняя цифра z2=a/10%10; cout<<z2; // средняя цифра z1=a/100; cout<<z1; // первая цифра getch(); return 0; }
Порядок выполнения операций в арифметических выражениях определяется скобками и приоритетом операций: а) выражения внутри скобок вычисляются до того, как взятая в скобки величина будет использована в дальнейших вычислениях; б) внутри скобок и в бесскобочных записях порядок действий совпадает с общепринятым в математике: сначала вычисляются значения функций и операции присвоения знака (унарный минус), затем умножения и деления (в том числе и вычисление остатка от деления) и, наконец, сложения и вычитания; в) операции, имеющие одинаковый приоритет, выполняются в порядке их следования в выражении: справа налево выполняются унарные операции, тернарная операция(см. далее), а также простая и составные операции присваивания (см. далее); остальные – слева направо.
Следует соблюдать осторожность при вычитании близких по величине чисел с плавающей точкой, помня о том, что вещественные числа представляются в компиляторе приближённо: данные типа float гарантируют 7-8 точных цифр в числе; тип double обеспечивает 15-16 точных цифр, а long double – до 20 цифр.
Пример.
float a = 2.5e+15; float b = a + 1.0; cout << b – a;
Очевидно, следовало бы ожидать, что результат будет равен 1. Однако на практике это не всегда так. Убедитесь сами.
Операция приведения типа. Операнды бинарных операций могут иметь различные типы. C/C++ автоматически выполняет преобразование между различными типами данных, приводя операнды к одному типу, когда это возможно. Следует обратить особое внимание на правила преобразования операндов различных типов, входящих в выражение. Основное правило здесь такое: если выражение содержит объекты разных типов, то более короткие типы перед вычислениями преобразуются к более длинным, чтобы по возможности исключить потерю значимости и точности. В сомнительных случаях обращайтесь к более толстым книгам по программированию. Программист, правда, может и сам воздействовать на преобразование типов в выражениях, используя операцию явного преобразования типа. Эта операция может быть записана в двух формах:
имя_типа (выражение) (имя_типа) выражение. В результате «выражение» преобразуется к заданному типу (разумеется, если это возможно).
Пример. Вычислить площадь прямоугольного треугольника по его катетам a и b.
int a, b; float s; a=3; b=4; s=(float)1/2 * a*b; cout<<"площадь = "<<s<<endl;
Убедитесь сами, что без описателя приведения к типу float программа выдаст в качестве результата 0.
Стандартные библиотечные функции. В выражениях могут использоваться имена вызываемых функций. Для вычисления часто встречающихся математических функций (sinx, cosx,, lnx, arctgx и др.), а также для преобразования данных, относящихся к разным типам, существуют заранее определенные стандартные функции. Вот некоторые из них:
abs(x), fabs(x) — вычисление | x | для целого и вещественного x; exp(x) — возведение e (основание натуральных логарифмов) в степень x; log(x) — вычисление натурального логарифма x; sqrt(x) — вычисление квадратного корня из x; ceil(x) — отыскание ближайшего целого, которое >=x; floor(x) — отыскание ближайшего целого, которое <=x; pow(x, y) — вычисление x в степени y; sin(x),cos(x),atan(x) — соответствующие тригонометрические функции. Для подключения к программе библиотеки стандартных математических функций необходимо с помощью препроцессорного утверждения #include в самом начале программы включить заголовочный файл <math.h> (или <cmath>), а для некоторых из рассматриваемых функций — файл <stdlib.h>:
#include <math.h> #include <stdlib.h>
Примеры арифметических выражений: Математическая запись Арифметическое выражение С/С++
О п е р а ц и и и н к ре м е н т а и д е к р е м е н т а. В языке С/С++ широко используются две нетрадиционные унарные операции для увеличения (инкремент) или уменьшения (декремент) значения переменной на 1, обозначаемые соответственно ++ и – –. Эти операции могут быть использованы или перед операндом, или после него (т. н. префиксная и постфиксная формыоперации соответственно). Они оказывают разное действие в выражениях: в записи ++n увеличение происходит до использования значения n, а в n++ увеличение идет уже после того, как используется значение n. Если считать, что значение переменной n равно 5, то выполнение оператора m = ++ n; присвоит переменной m значение 6, а после выполнения оператора m = n++; значение m станет равным 5. И в том, и в другом случае n получит значение 6. Первый пример в точности соответствует последовательности операторов n=n+1; m=n; а во втором случае - следующим двум операторам: m=n;n=n+1. Операция декремента (--) действует аналогично. Обе операции имеют самый низкий приоритет среди арифметических операций и выполняются после бинарных операций + и –. Эти операции в выражениях следует применять с некоторой осторожностью. Не будьте слишком самоуверенными!
Пример.
int n=5, y; y=n/2 + 5*(1 + n++) + n/2; cout << y;
Что, на Ваш взгляд, будет выдано на экран? Возможно, компилятор сперва вычислит выражение в скобках, увеличив n, а затем использует это новое значение для вычисления n/2? На этот счет нет никаких гарантий, всё зависит от реализации компилятора. Результаты работы этого фрагмента, полученные для семейства компиляторов Borland C++ (в т. ч. Borland C++ Builder 6), приведены далее (см. задачу 7 в разделе «Программирование алгоритмов линейной структуры». Операция определения размера sizeof предназначена для вычисления длины переменой (выражения) или типа (в байтах), например, sizeof (max), sizeof (double).
|
||||||||||
|
Последнее изменение этой страницы: 2016-12-16; просмотров: 635; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.151 (0.011 с.) |