русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Приоритет и ассоциативность операций

Пример выражения:

Y=Z*A+pow(X, (double)2);

где

X, Y, Z, A, 2 – операнды;

=, +, pow, (double)<приведение типа> – операции над операндами

Каждая операция имеет вполне определенный приоритет и ассоциативность. Это

позволяет без лишних скобок однозначно понимать, к какой операции относится

операнд, стоящий между двумя соседними операциями. Например, в выражении

a + b * c

операнд b относится к операции умножения, так как у нее приоритет выше, чем у

сложения. Поэтому эквивалентное выражение со скобками будет таким:

a + (b * c)

Операции одинакового приоритета либо левоассоциативны, либо правоассоциативны.

Это значит, что операнд, находящийся между двумя такими операциями, относится

либо к левой операции, либо (в случае правой ассоциативности) к правой. В языке Си

операции сложения и вычитания имеют одинаковый приоритет и левую

ассоциативность. Поэтому в выражении

a b + c

операнд b относится к левой операции, т.е. к «минусу», а не к «плюсу», и это

выражение эквивалентно следующему выражению со скобками:

((a b) + c)

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

направо; правая ассоциативность задаёт способ группировки операций справа налево.

Примером правоассоциативной операции в языке Си является операция присваивания.

Выражение с операциями присваивания

a = b = c

эквивалентно выражению

a = ( b = c )

Приоритет и ассоциативность позволяют установить границы подвыражений,

являющихся операндами, и заключить их в скобки. Например, если в выражении

a*(b c) + 2 + a*4*5 − d

каждый нетривиальный операнд заключить в скобки, получим:

( ( ( a * ( b c ) ) + 2 ) + ( ( a * 4 ) * 5 ) ) − d

Каждая операция вместе со своими операндами выделена в этом примере отдельным

цветом.

Порядок выполнения операций зависит не только от расстановки скобок, но и от

порядка вычисления операндов (об этом ниже в п. 4).

В языке Си все постфиксные операции имеют одинаковый приоритет — самый

высокий по отношению к другим операциям, — и естественным образом группируются

слева направо. Приоритет префиксных операций ниже, чем у постфиксных, но выше,

чем у инфиксных. Префиксные операции естественным образом группируются справа

налево. Например, в выражении

&*p[i]++

операции & и * — префиксные, [] и ++ — постфиксные. Поэтому скобки будут

расставлены так:

&(*((p[i])++))

Инфиксные операции разбиты на несколько групп, имеющих разные приоритеты и

ассоциативность (см. таблицу в п. 6).

Просмотров: 2212


Вернуться в оглавление



Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.