( ) Вызов функции (с 28) Слева направо
[ ] Выделение элемента массива (с. 27)
Выделение элемента структуры или объеди нения (с.27)
—> Выделение элемента структуры (объедине ния) , адресуемой (го) указателем (с. 27)
! Логическое отрицание (с. 24) Справа налево
~ Побитовое отрицание (с. 25) - ,,+Изменение знака (с. 19) i
++ Увеличение на единицу (с. 19)
-- Уменьшение на единицу (с. 20) & Определение адреса (с. 26)
* Обращение по адресу (с. 26) (тип) Преобразование типа (с. 28) sizeof Определение размера в байтах (с. 28)
/ Деление (с. 19) % Деление по модулю (с. 19) |
- Вычитание (с. 19) |
< < Сдвиг влево (с. 26) Слева направо > > Сдвиг вправо (с. 25) |
< Меньше, чем (с. 23) Слева направо <= Меньше или равно (с. 24) > Больше, чем (с. 24) >= Больше или равно (с. 24) |
== Равно (с. 23) Слева направо != Неравно (с. 23) |
& Побитовая операция И (с. 26) Слева направо |
Побитовая операция исключающее ИЛИ (с. 26) Слева направо |
&& Логическая операция Ц (с. 25) Слева направо |
11 Логическая операция ИЛИ (с. 24) Слева направо |
= Присваивание (с. 21 -22) Справа налево “= ”= &= *= 1= |
, Операция запятая (с. 28) Слева направо |
4.13. Порядок обработки операндов
Для четырех операций (&& II ?: ,) гарантируется, что левый операнд будет обрабатываться первым. Для остальных операций поря-) док обработки может быть разным на разных компиляторах. 'Это означает, что если программа, отлаженная на некоторой ЭВМ, зависит от негарантированного порядка обработки операндов, то на другой ЭВМ с другим компилятором она может выполняться неправильно. Пример
v = (х = 5) + (++х);
Если порядок обработки операндов в операции + слева направо, то переменная v получит значение 11 (5 + 6) и значение х будет равно 6.
Если порядок справа налево, значение v зависит от значения х, которое эта переменная имела до выполнения выражения; например, если значение х было равно 0, то значение v станет равным б (5 + 1) и значение х станет равным 5.