КАТЕГОРИИ: Архитектура-(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) |
Операции
Знаки операций. Для формирования и последующего вычисления выражений используются операции. Для изображения одной операций в большинстве случаев используется несколько символов. В таблице приведены все знаки операций, определенные стандартом языка. Операции в таблице разбиты на группы в соответствии с их рангами. За исключением операций "[]", "()" и "?:", все знаки операций распознаются компилятором как отдельные лексемы. В зависимости от контекста одна и та же лексема может обозначать разные операции, т.е. один и тот же знак операции может употребляться в различных выражениях и по-разному интерпретироваться в зависимости от контекста. Например, бинарная операция & - это поразрядная конъюнкция, а унарная операция & - это операция получения адреса. Операции ранга 1 имеют наивысший приоритет. Операции одного ранга имеют одинаковый приоритет, и если их в выражении несколько, то они выполняются в соответствии с правилом ассоциативности либо слева направо (→), либо справа налево (). Если один и тот же знак операции приведен в таблице дважды (например, знак *), то первое появление (с меньшим по номеру, т.е. старшим по приоритету, рангом) соответствует унарной операции, а второе - бинарной. Опишем кратко возможности отдельных операций. Приоритеты (ранги) операций
Унарные (одноместные) операции. Для изображения одноместных префиксных и постфиксных операций используются следующие символы: & - операция получения адреса операнда (ранг 2); * - операция обращения по адресу, т.е. раскрытия ссылки, иначе операция разыменования (доступа по адресу к значению того объекта, на который указывает операнд). Операндом должен быть указатель (ранг 2); - - унарный минус, изменяет знак арифметического операнда (ранг 2); + - унарный плюс, введен для симметрии с унарным минусом (ранг 2); ~ - поразрядное инвертирование внутреннего двоичного кода целочисленного аргумента - побитовое отрицание (ранг 2)\ !- НЕ - логическое отрицание значения операнда (ранг 2). Применяется к скалярным операндам. Целочисленный результат 0 (если операнд ненулевой, т.е. истинный) или 1 (если операнд нулевой, т.е. ложный). Напомним, что в качестве логических значений в языке используют целые числа: 0 - ложь и не нуль, т.е. (!0) - истина. Отрицанием любого ненулевого числа будет 0, а отрицанием нуля будет 1. Таким образом:!1 равно 0;!2 равно 0;!(-5) равно 0;!0 равно 1; ++ - увеличение на единицу (инкремент или автоувеличение -ранг 2). -- - уменьшение на единицу (декремент или автоуменьшеие - ранг 2) - унарная операция, операндом которой должно быть леводопустимое выражение, т.е. не константа и не выражение: sizeof - операция (ранг 2) вычисления размера (в байтах) для объекта того типа, который имеет операнд. Разрешены два формата операции: sizeof выражение sizeof (mun). sizeof не вычисляет значения выражения, а только определяет его тип, для которого затем вычисляется размер. Бинарные (двуместные) операции делятся на следующие группы: • аддитивные; • мультипликативные; • сдвигов; • поразрядные; • операции отношений; • логические; • присваивания; • выбора компонента структурированного объекта; • операция "запятая"; • скобки в качестве операций. Аддитивные операции: + - бинарный плюс - сложение арифметических операндов или сложение указателя с целочисленным операндом (ранг 4); - - бинарный минус - вычитание арифметических операндов или вычитание указателей (ранг 4). Мультипликативные операции: * - умножение операндов арифметического типа (ранг 3); / - деление операндов арифметического типа (ранг 3). При целочисленных операндах абсолютное значение результата округляется до целого. Например, 20/3 равно 6, -20/3 равно -6, (-20)/3 равно -6, 20/(-3) равно -6; % - получение остатка от деления целочисленных операндов (деление по модулю - ранг 3). При неотрицательных операндах остаток положительный. В противном случае остаток определяется реализацией. В компиляторе Turbo С: 13%4 равняется 1, (-13)%4 равняется -1; 13%(-4) равно +1, а (-13)%(-4) равняется -1. При ненулевом делителе для целочисленных операндов всегда выполняется соотношение: (a/b)*b + a%b равно а. Операции отношений (сравнения): < меньше, чем (ранг 6);, > больше, чем (ранг 6); <= меньше или равно (ранг 6); >= больше или равно (ранг б); == равно (ранг 7); != не равно (ранг 7). Операнды операций отношений должны быть арифметического типа или могут быть указателями. Результат целочисленный: 0 (ложь) или 1 (истина). Последние две операции (операции сравнения на равенство) имеют более низкий приоритет по сравнению с остальными операциями отношений. Таким образом, выражение (х < В ==А < х) есть 1, когда значение х находится в интервале от А до В и А<В либо х, А, В равны. (Вначале вычисляются х<В и А<х, к результатам применяется операция сравнения на равенство ==.) Логические бинарные операции: && - конъюнкция (И) арифметических операндов или отношений (ранг 11. Целочисленный результат 0 (ложь) или 1 (истина); || - дизъюнкция (ИЛИ) арифметических операндов или отношений (ранг 12). Целочисленный результат 0 (ложь) или 1 (истина). (Вспомните о существовании унарной операции отрицания '!'.) Результаты отношений и логических операций: 3<5 равняется 1; 3>5 равняется 0; 3=5 равняется 0; 3!=5 равняется 1; 3!=5 || 3=5 равняется 1; 3+4>5 && 3+5>4 && 4+5>3 равняется 1. Операции присваивания (ранг 14) В качестве левого операнда в операциях присваивания может использоваться только модифицируемое именующее выражение (l -значение), т.е. ссылка на некоторую именованную область памяти, значение которой доступно изменениям. Перечислим операции присваивания, отметив, что существуют одна простая операция присваивания и ряд составных операций: = - простое присваивание: присвоить значение выражения-операнда из правой части операнду левой части. Пример: Р = 10.3 - 2*х; *= - присваивание после умножения: присвоить операнду левой части произведение значений обоих операндов. Р *= 2 эквивалентно Р = Р * 2; /= - присваивание после деления: присвоить операнду левой части частное от деления значения левого операнда на значение правого. Р /= 2.2 - d эквивалентно Р=- Р / (2.2 - d); %= - присваивание после деления по модулю: присвоить операнду левой части остаток от целочисленного деления значения левого операнда на значение правого операнда. N %= 3 эквивалентно N = N % 3; = - присваивание после суммирования: присвоить операнду левой части сумму значений обоих операндов А += В эквивалентно А = А + В; -= - присваивание после вычитания: присвоить операнду левой части разность значений левого и правого операндов. X -= 4.3 - Z эквивалентно X = X - (4.3 - Z); Обратите внимание, что для всех составных операций присваивания форма присваивания Е1 ор= Е2 эквивалентна Е1 = El op (E2), где ор - обозначение операции. Запятая в качестве операции (ранг 15) Несколько выражений, разделенных запятыми ",", вычисляются последовательно слева направо. В качестве результата сохраняются тип и значение самого правого выражения. Например, если переменная х имеет тип int, то значением выражения (х=3, 3*х) будет 9, а переменная х примет значение 3. Условная трехместная операция (ранг 13). В отличие от унарных и бинарных операций условная тернарная операция используется с тремя операндами. В изображении условной операции применяются два символа '?' и ':' и три выражения-операнда: выражение_1? выражение_2: выражение_3 Первым вычисляется значение выражения_1. Если оно истинно, т.е. не равно нулю, то вычисляется значение выражения_2, которое становится результатом. Если при вычислении выражения_1 получится 0, то в качестве результата берется значение выражения_3. Классический пример: х < 0? -х: х; Выражение возвращает абсолютную величину переменной х. Операция явного преобразования типа. Операция преобразования (приведения) типа (ранг 2) имеет следующий формат: (имя_типа) операнд Такое выражение позволяет преобразовывать значение операнда к заданному типу. В качестве операнда используется унарное выражение, которое в простейшем случае может быть переменной, константой или любым выражением, заключенным в круглые скобки.
Дата добавления: 2014-12-16; Просмотров: 567; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |