Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь 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; просмотров: 538; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.137.177.204 (0.012 с.) |