Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Операции и выражения




В таблице ниже сведены относительные приоритеты операций и порядок их выполнения в выражениях. Строки расположены в порядке убывания приоритетов, а операции, перечисленные в одной строке, имеют одинаковый приоритет. Поэтому + и – имеют одинаковый приоритет и он выше чем у операций << и > >.Группировка операций и операндов кодируется так:

«справа – налево - <-» или «слева – направо - ->».

Таким образом, a+b+c при группировке эквивалентно (a+b)+c,

а присваивание a=b=c будет группироваться иначе - a=(b=c).

 

Операции Порядок Вначале вычисляется левый операнд
() [] ->. ->  
! ~ ++ -- - (тип) * & sizeof() <-  
* / % ->  
+ - ->  
<< >> ->  
< <= > >= ->  
==!= ->  
& ->  
^ ->  
| ->  
&& -> +
|| -> +
?: -> +
= += -= *= /= %= <<= >>= &= ^= |= <-  
, -> +

 

Для операций &&, ||,?: гарантируется вначале выполнение левого операнда. Для остальных операторов порядок вычисления операндов не фиксируется и зависит только от компилятора

Пример

a=y>c?b:a;

a=y>(c?b:l>k?f:g);

Операции группируются следующим образом:

a=(y>(c?b:((l>k)?f:g));

вначале - с, затем в зависимости от с будет b или l>k и затем в зависимости от l>k будет вычисляться f или g, затем y>…

Задача

a=b=y>x?z=a+b:k;

Группирование:

a=(b=((y>x)?(z=(a+b)):k));

В первую очередь в выражениях вычисляются операции с более высоким приоритетом.

Так: a=((y>c)?b:a);

Вначале y>c, затем?: и потом =.

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

1 идентификатор

2 константа

3 строка

4 (выражение)

5 первичное_ выражение [выражение]

6 первичное _выражение (список_выражений opt)

7 первичный_адрес.идентификатор

8 первичное_ выражение à идентификатор

Смысл первых двух строчек понятен.

Уточним остальные:
СтрокаУточнение смысла

3 имеются в виду строки вида “….”. Например, f(“data”);

4 скобки управляющие приоритетом, выделяющие подвыражение

(a+b)*c

5 индексированные переменные ….а +ARRAY [i][j]*c…

6 указатели функций..1.2*func (a,b)+pi

7 обращение к элементу записи. Например, - str1.fp.a здесь str1 имя

структурной переменной, fp – имя подполя и а - имя подполя

следующего уровня (вложенного в fp).

8 обращение к элементу записи через указатель, ссылающийся на

запись: p-> fp.a. В этом случае p должен содержать адрес структуры, например, str1.






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных