КАТЕГОРИИ: Архитектура-(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) |
Операции и выражения
Директивы препроцессора Препроцессор – это программа или часть программы, которая выполняет обработку исходного кода до начала компиляции.
В любой программе требуется производить вычисления. Для вычисления значений используются выражения, которые состоят из операндов, знаков операций и скобок. В приведенном выше примере программы выражение использовалось для вычисления суммы в рублях. Другие примеры выражений: (a + 0.12) / 6x && y ||! z(t * sin(x) - 1.05e4) / ((2 * k + 2) * (2 * k + 3))a = b = c b++cout << ai++, j++
Операнды задают данные для вычислений. Операции задают действия, которые необходимо выполнить. Каждый операнд является, в свою очередь, выражением или одним из его частных случаев, например, константой или переменной. Операции выполняются в соответствии с приоритетами. Для изменения порядка выполнения операций используются круглые скобки. Уровень их вложенности не ограничен. Язык С++ предоставляет в наше распоряжение внушительный набор операций: арифметические, логические, поразрядные, операции отношения, выделения памяти, преобразования типа, выбора и т. д. В таблице 1.7 приведены простейшие операции, с которых мы начнем изучение.
Операции расположены в порядке убывания приоритета, операции с разными приоритетами отделены горизонтальной чертой. Уровней приоритетов в языке С++ очень много, поэтому в случае сомнений надо обязательно обращаться к справочной информации. Однако основные правила просты и соответствуют принятым в математике: например, вычитание имеет более низкий приоритет, чем умножение, поэтому для того, чтобы оно было выполнено раньше, соответствующая часть выражения заключается в скобки. Если в одном выражении записано несколько операций одинакового приоритета, то унарные операции, условная операция и операции присваивания выполняются справа налево, остальные – слева направо. Например:
a = b = c означает a = (b = c), a + b + c означает (a + b) + c.
Порядок вычисления операндов в выражении не определен: например, нельзя считать, что в выражении (sin(x + 2) + cos(y + 1)) обращение к синусу будет выполнено раньше, чем к косинусу. Только четыре операции гарантируют порядок вычислений слева направо:,,?:, && и ||. Результат вычисления выражения характеризуется значением и типом. Например, пусть описаны две переменные целого типа a и b:
int a = 2, b = 5;
Тогда выражение a + b имеет значение 7 и тип int. Рассмотрим подробнее некоторые операции. Операции присваивания (=, +=, -=, *= и т. д.). Формат операции простого присваивания (=):
операнд_1 = операнд_2
Левым операндом должна быть переменная, а правым – любое выражение. Сначала вычисляется выражение, стоящее в правой части операции, а потом его результат записывается в переменную. То, что ранее хранилось в этой переменной, естественно, теряется. Если тип значения, полученного в результате вычисления, не совпадает с типом левого операнда, то выполняется преобразование типа по умолчанию (об этом – в конце этой лекции). В составных операциях присваивания (+=, *=, /= и т. п.) при вычислении выражения, стоящего в правой части, используется и значение из левой части. Например, при сложении с присваиванием к значению левого операнда прибавляется значение правого, и результат записывается в левый операнд. Таким образом, выражение a += b является более компактной записью выражения a = a + b. Операции увеличения и уменьшения на 1 (++ и --). Эти операции, называемые также инкрементом и декрементом, имеют две формы записи - префиксную, когда операция записывается перед операндом, и постфиксную. В префиксной форме сначала изменяется операнд, и новое значение является результатом операции. В постфиксной форме значением выражения является исходное значение операнда, после чего он изменяется:
#include <stdio.h>
int main() { int x = 3, y = 3; printf("Значение префиксного выражения: %d \n", ++x); printf("Значение постфиксного выражения: %d \n", y++); printf("Значение х после приращения: %d \n", x); printf("Значение у после приращения: %d \n", у); } Результат работы программы:
Значение префиксного выражения: 4 Значение постфиксного выражения: 3 Значение х после приращения: 4 Значение у после приращения: 4
Как и выражения с присваиванием, выражения с инкрементом и декрементом можно сделать самостоятельным оператором, задав после выражения точку с запятой. Операции отрицания (-,!). Арифметическое отрицание (унарный минус -) изменяет знак операнда целого или вещественного типа на противоположный. Логическое отрицание (!) дает в результате значение false, если операнд есть true, и значение true, если операнд равен false. Операнд может быть арифметического типа. В этом случае выполняется неявное преобразование в тип bool. Деление (/) и остаток от деления (%). Операция деления применима к операндам арифметического типа. Если оба операнда целочисленные, результатом операции является целая часть частного (дробная часть отсекается). Например, результатом 5/2 будет 2. Если же хотя бы один операнд вещественный, то и результат будет вещественным числом. В этом случае тип результата определяется правилами преобразования типов, которые, будут рассмотрены далее. Операция остатка от деления применяется только к целочисленным операндам. Знак результата зависит от реализации.
#include <stdio.h>
int main() { int x = 11, y = 4; float z = 4; printf("Результаты деления: %d %f \n", x / y, x / z); printf("Остаток: %d \n", x % y); } Результат работы программы:
Результаты деления: 2 2.750000 Остаток: 3
Операция последовательного вычисления "запятая" (,). Формат операции:
Дата добавления: 2015-04-30; Просмотров: 391; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |