элемент программного кода который описывает то или иное действие в выражении это
PHP: Выражения и операторы
Выражения
Выражение — это любая единица исходного кода программы, которая может быть вычислена для получения значения, например, вызов функции, использование операторов, или просто обращение к переменной по имени. В PHP почти всё является выражением.
Выражения делятся на простые (их также называют первичными) и сложные. Первичные выражения являются самостоятельными выражениями — они не включают в себя ещё более простых выражений. Например, к первичным выражениям относятся: идентификаторы, литералы и оператор группировки. Сложные выражения состоят из простых выражений. Типичный способ конструирования сложных выражений из простых выражений заключается в использовании операторов:
Некоторые выражения, так же как и инструкции, оканчиваются точкой с запятой, например:
Операторы
Из всего вышесказанного можно сделать вывод, что выражением называются два или больше подвыражений, объединенных операторами. Чем больше у вас подвыражений и операторов, тем длиннее и сложнее выражение.
При работе с операторами особое значение имеют следующие аспекты:
Количество операндов
Типы операндов
Создавая выражения, необходимо обращать внимание на типы операндов, с которыми работает каждый из операторов, потому что каждый оператор ожидает получить операнды конкретного типа данных. Например, нельзя выполнить умножение двух строк
Однако PHP старается максимально облегчить вам жизнь, автоматически выполняя необходимые преобразования типов операндов для конкретных операторов. Следующее выражение вполне допустимо:
В этом выражении интерпретатор PHP автоматически преобразует строки в числа и перемножает их. Но иногда такое автоматическое преобразование невозможно, поэтому будьте внимательны и следите за используемыми типами операндов.
Приоритет
Приоритет оператора определяет порядок исполнения операций при вычислении значения выражения.
Операторы с одинаковым приоритетом обрабатываются в порядке следования в выражении. Например, операции умножения и деления исполняются в том порядке, в котором следуют в выражении, потому что они имеют одинаковый приоритет.
Если выражение содержит операторы с разным приоритетом, то порядок их исполнения может влиять на конечный результат выражения. С помощью круглых скобок ( и ) можно переопределить порядок исполнения операторов или просто улучшить читаемость выражения.
Во втором выражении умножение будет выполняться после сложения, потому что порядок исполнения операторов был переопределен с помощью круглых скобок.
Ассоциативность
Таблица операторов
В PHP есть несколько уровней приоритетов, в таблице приведен перечень операторов, отсортированных по уровню приоритета, от высшего к низшему. Операторы на одном уровне имеют одинаковый приоритет.
В колонке «Ассоциативность» помечены операторы, которые имеют правую ассоциативность, остальные относятся к левой.
Электроника для всех
Блог о электронике
1.3.1. Операнды и операции
Комбинация знаков операций и операндов, результатом которой является определенное значение, называется выражением. Знаки операций определяют действия, которые должны быть выполнены над операндами. Каждый операнд в выражении может быть выражением. Значение выражения зависит от расположения знаков операций и круглых скобок в выражении, а также от приоритета выполнения операций.
В языке СИ присваивание также является выражением, и значением такого выражения является величина, которая присваивается.
При вычислении выражений тип каждого операнда может быть преобразован к другому типу. Преобразования типов могут быть неявными, при выполнении операций и вызовов функций, или явными, при выполнении операций приведения типов.
Операнд — это константа, литерал, идентификатор, вызов функции, индексное выражение, выражение выбора элемента или более сложное выражение, сформированное комбинацией операндов, знаков операций и круглых скобок. Любой операнд, который имеет константное значение, называется константным выражением. Каждый операнд имеет тип.
Если в качестве операнда используется константа, то ему соответствует значение и тип представляющей его константы. Целая константа может быть типа int, long, unsigned int, unsigned long, в зависимости от ее значения и от формы записи. Символьная константа имеет тип int. Константа с плавающей точкой всегда имеет тип double.
Строковый литерал состоит из последовательности символов, заключенных в кавычки, и представляется в памяти как массив элементов типа char, инициализируемый указанной последовательностью символов. Значением строкового литерала является адрес первого элемента строки и синтаксически строковый литерал является немодифицируемым указателем на тип char. Строковые литералы могут быть использованы в качестве операндов в выражениях, допускающих величины типа указателей. Однако так как строки не являются переменными, их нельзя использовать в левой части операции присваивания.
Следует помнить, что последним символом строки всегда является нулевой символ, который автоматически добавляется при хранении строки в памяти.
Идентификаторы переменных и функций. Каждый идентификатор имеет тип, который устанавливается при его объявлении. Значение идентификатора зависит от типа следующим образом:
Вызов функций состоит из выражения, за которым следует необязательный список выражений в круглых скобках:
выражение-1 ([ список выражений ])
Значением выражения-1 должен быть адрес функции (например, идентификатор функции). Значения каждого выражения из списка выражений передается в функцию в качестве фактического аргумента. Операнд, являющийся вызовом функции, имеет тип и значение возвращаемого функцией значения.
Индексное выражение задает элемент массива и имеет вид:
Тип индексного выражения является типом элементов массива, а значение представляет величину, адрес которой вычисляется с помощью значений выражение-1 и выражение-2.
Обычно выражение-1 — это указатель, например, идентификатор массива, а выражение-2 — это целая величина. Однако требуется только, чтобы одно из выражений было указателем, а второе целочисленной величиной. Поэтому выражение-1 может быть целочисленной величиной, а выражение-2 указателем. В любом случае выражение-2 должно быть заключено в квадратные скобки. Хотя индексное выражение обычно используется для ссылок на элементы массива, тем не менее индекс может появляться с любым указателем.
Индексные выражения для ссылки на элементы одномерного массива вычисляются путем сложения целой величины со значениями указателя с последующим применением к результату операции разадресации (*).
Так как одно из выражений, указанных в индексном выражении, является указателем, то при сложении используются правила адресной арифметики, согласно которым целая величина преобразуется к адресному представлению, путем умножения ее на размер типа, адресуемого указателем. Пусть, например, идентификатор arr объявлен как массив элементов типа double.
Таким образом, чтобы получить доступ к i-тому элементу массива arr можно написать аrr[i], что, в силу сказанного выше, эквивалентно i[a]. При этом величина i умножается на размер типа double и представляет собой адрес i-го элемента массива arr от его начала. Затем это значение складывается со значением указателя arr, что в свою очередь дает адрес i-го элемента массива. К полученному адресу применяется операция разадресации, т.е. осуществляется выборка элемента массива arr по сформированному адресу.
Таким образом, результатом индексного выражения arr[i] (или i[arr]) является значение i-го элемента массива.
Выражение с несколькими индексами ссылается на элементы многомерных массивов. Многомерный массив — это массив, элементами которого являются массивы. Например, первым элементом трехмерного массива является массив с двумя измерениями.
Для ссылки на элемент многомерного массива индексное выражение должно иметь несколько индексов заключенных к квадратные скобки:
выражение-1 [ выражение-2 ][ выражение-3 ] …
Такое индексное выражение интерпретируется слева направо, т.е. вначале рассматривается первое индексное выражение:
Результат этого выражения есть адресное выражение, с которым складывается выражение-3 и т.д. Операция разадресации осуществляется после вычисления последнего индексного выражения. Отметим, что операция разадресации не применяется, если значение последнего указателя адресует величину типа массива.
Рассмотрим процесс вычисления индексного выражения mass[1][2][2].
Если было бы указано mass [1][2], то результатом был бы указатель на массив из трех элементов типа int. Соответственно значением индексного выражения mass [1] является указатель на двухмерный массив.
Выражение выбора элемента применяется, если в качестве операнда надо использовать элемент структуры или объединения. Такое выражение имеет значение и тип выбранного элемента. Рассмотрим две формы выражения выбора элемента:
В первой форме выражение представляет величину типа struct или union, а идентификатор — это имя элемента структуры или объединения. Во второй форме выражение должно иметь значение адреса структуры или объединения, а идентификатор — именем выбираемого элемента структуры или объединения.
Обе формы выражения выбора элемента дают одинаковый результат. Действительно, запись, включающая знак операции выбора (->), является сокращенной версией записи с точкой для случая, когда выражению стоящему перед точкой предшествует операция разадресации (*), примененная к указателю, т.е. запись
в случае, если выражение является указателем.
В приведенном примере используется операция выбора (.) для доступа к элементу left структурной переменной elem. Таким образом элементу left структурной переменной elem присваивается адрес самой переменной elem, т.е. переменная elem хранит ссылку на себя саму.
Приведение типов это изменение (преобразование) типа объекта. Для выполнения преобразования необходимо перед объектом записать в скобках нужный тип:
( имя-типа ) операнд.
Приведение типов используются для преобразования объектов одного скалярного типа в другой скалярный тип. Однако выражению с приведением типа не может быть присвоено другое значение.
int i; bouble x; b = (double)i+2.0;
В этом примере целая переменная i с помощью операции приведения типов приводится к плавающему типу, а затем уже участвует в вычислении выражения.
Константное выражение — это выражение, результатом которого является константа. Операндом константного выражения могут быть целые константы, символьные константы, константы с плавающей точкой, константы перечисления, выражения приведения типов, выражения с операцией sizeof и другие константные выражения. Однако на использование знаков операций в константных выражениях налагаются следующие ограничения:
Выражения со знаками операций могут участвовать в выражениях как операнды. Выражения со знаками операций могут быть унарными (с одним операндом), бинарными (с двумя операндами) и тернарными (с тремя операндами).
Унарное выражение состоит из операнда и предшествующего ему знаку унарной операции и имеет следующий формат:
Операции. По количеству операндов, участвующих в операции, операции подразделяются на унарные, бинарные и тернарные.
В языке Си имеются следующие унарные операции:
Унарные операции выполняются справа налево.
Операции увеличения и уменьшения увеличивают или уменьшают значение операнда на единицу и могут быть записаны как справа так и слева от операнда. Если знак операции записан перед операндом (префиксная форма), то изменение операнда происходит до его использования в выражении. Если знак операции записан после операнда (постфиксная форма), то операнд вначале используется в выражении, а затем происходит его изменение.
В отличие от унарных, бинарные операции, список которых приведен в табл.7, выполняются слева направо.
Таблица 7
Знак операции | Операция | Группа операций |
---|---|---|
* | Умножение | Мультипликативные |
/ | Деление | |
% | Остаток от деления | |
+ | Сложение | Аддитивные |
— | Вычитание | |
> | Сдвиг вправо | |
= | Больше или равно | |
== | Равно | |
!= | Не равно | |
& | Поразрядное И | Поразрядные операции |
| | Поразрядное ИЛИ | |
^ | Поразрядное исключающее ИЛИ | |
&& | Логическое И | Логические операции |
|| | Логическое ИЛИ | |
, | Последовательное вычисление | Последовательного вычисления |
= | Присваивание | Операции присваивания |
*= | Умножение с присваиванием | |
/= | Деление с присваиванием | |
%= | Остаток от деления с присваиванием | |
-= | Вычитание с присваиванием | |
+= | Сложение с присваиванием | |
>= | Сдвиг вправо присваиванием | |
&= | Поразрядное И с присваиванием | |
|= | Поразрядное ИЛИ с присваиванием | |
^= | Поразрядное исключающее ИЛИ с присваиванием |
Левый операнд операции присваивания должен быть выражением, ссылающимся на область памяти (но не объектом объявленным с ключевым словом const), такие выражения называются леводопустимыми к ним относятся:
При записи выражений следует помнить, что символы (*), (&), (!), (+) могут\ обозначать унарную или бинарную операцию.
Добавить комментарий Отменить ответ
Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.
Выражения, операнды и операторы
Каждый профессионал когда-то был чайником. Наверняка вам знакомо состояние, когда «не знаешь как начать думать, чтобы до такого додуматься». Наверняка вы сталкивались с ситуацией, когда вы просто не знаете, с чего начать. Эта книга ориентирована как раз на таких людей, кто хотел бы стать программистом, но совершенно не знает, как начать этот путь. Подробнее…
Как вы уже знаете, исходный код программы на языке высокого уровня — это текст, который состоит из специальных зарезервированных слов, переменных, констант и т.п. Однако, это упрощённое объяснение. Сегодня мы попробуем приблизиться к более правильным формулировкам. Потому что терминология и правильное её понимание — это очень важная часть любой профессии.
Итак, начнём с выражений.
Выражение — это самый важный элемент практически любого языка программирования. Практически все, что мы пишем в программе — это выражения. Иными словами, любая часть исходного кода, любая комбинация из переменных, констант, функций, которая выполняет какие-то вычисления (действия) — это выражение. Например,
Это выражение, которое записывает в переменную х число 100.
Оператор — это элемент программного кода, который описывает то или иное действие в выражении (операцию). В большинстве языков программирования высокого уровня оператор — это символ, благодаря которому могут производиться различные виды вычислений, сравнений или присваиваний с участием одного или нескольких значений.
Операнд — это значение, переменная или выражение, которое расположено слева или справа от оператора. Например
Здесь 1 и 2 — это операнды, а знак ПЛЮС (+) — это оператор.
Когда вы будете создавать выражения, не забывайте, что типы операндов в выражении должны совпадать. Например, такой код
var x : byte; c : char; begin x := x + c; end.
вызовет ошибку во время компиляции, и программа не будет создана. Все похожие типы (например, все целочисленные) можно использовать в качестве операндов. Например, такой код
var x : byte; c : integer; begin x := x + c; end.
Не вызовет особых возражений у компилятора, однако это может повлечь за собой неприятности, которые были описаны ранее.
Основные виды операторов: арифметические, операторы присваивания, сравнения, логические и поразрядные (побитовые).
Также разделяются операторы по количеству операндов:
Попробуйте догадаться, какие из приведённых ниже операторов являются унарными, а какие бинарными:
Если вы думаете, что на этом с операторами всё, то вы заблуждаетесь. Мы ещё долго и нудно будем о них говорить, так как это тема большая и очень важная.
Кроме того, я вас буду иногда путать, называя операторы операциями. В общем то, это достаточно близкие понятия. Разница лишь в том, что оператор — это символ в языке программирования, а операция — это действие, которое выполняется с помощью этого символа. Например,
Оператор + выполняет операцию сложения
Оператор * выполняет операцию умножения
Домашнее задание придумайте сами. У вас пока недостаточно знаний об операторах и выражениях, чтобы грамотно использовать их в своих программах.
Выражения
Выражение — это любая единица исходного кода программы, которая может быть вычислена для получения значения, например, вызов функции, использование операторов, или просто обращение к переменной по имени. В PHP почти всё является выражением.
Выражения делятся на простые и сложные. Простые выражения являются самостоятельными выражениями — они не включают в себя ещё более простых выражений. Сложные выражения состоят из простых выражений. Типичный способ конструирования сложных выражений из простых выражений заключается в использовании операторов:
Некоторые выражения оканчиваются точкой с запятой. Именно поэтому любое выражение — это то, что вычисляется для получения значения:
Операнды
Операнд представляет собой некоторую величину, обрабатываемую в программе. Операнды могут относиться к любому типу данных. Примеры операндов:
Операторы
Оператор представляет собой символическое обозначение некоторого действия, выполняемого с операндами в выражении. PHP выполняет автоматическое преобразование типов на основании типа оператора, объединяющего два операнда.
В таблице приведен полный список всех операторов, упорядоченных по убыванию приоритета:
Что такое операнд в программировании. Выражения, операнды и операторы. Операнды
Выражения, операнды и операторы
Как вы уже знаете, исходный код программы на языке высокого уровня — это текст, который состоит из специальных зарезервированных слов, переменных, констант и т.п. Однако, это упрощённое объяснение. Сегодня мы попробуем приблизиться к более правильным формулировкам. Потому что терминология и правильное её понимание — это очень важная часть любой профессии.
Итак, начнём с выражений.
Выражение — это самый важный элемент практически любого языка программирования. Практически все, что мы пишем в программе — это выражения. Иными словами, любая часть исходного кода, любая комбинация из переменных, констант, функций, которая выполняет какие-то вычисления (действия) — это выражение. Например,
Это выражение, которое записывает в переменную х число 100.
Оператор — это элемент программного кода, который описывает то или иное действие в выражении (операцию). В большинстве языков программирования высокого уровня оператор — это символ, благодаря которому могут производиться различные виды вычислений, сравнений или присваиваний с участием одного или нескольких значений.
Операнд — это значение, переменная или выражение, которое расположено слева или справа от оператора. Например
Здесь 1 и 2 — это операнды, а знак ПЛЮС (+) — это оператор.
Когда вы будете создавать выражения, не забывайте, что типы операндов в выражении должны совпадать. Например, такой код
вызовет ошибку во время компиляции, и программа не будет создана. Все похожие типы (например, все целочисленные) можно использовать в качестве операндов. Например, такой код
Не вызовет особых возражений у компилятора, однако это может повлечь за собой неприятности, которые были описаны ранее.
Основные виды операторов: арифметические, операторы присваивания, сравнения, логические и поразрядные (побитовые).
Также разделяются операторы по количеству операндов:
Попробуйте догадаться, какие из приведённых ниже операторов являются унарными, а какие бинарными:
Если вы думаете, что на этом с операторами всё, то вы заблуждаетесь. Мы ещё долго и нудно будем о них говорить, так как это тема большая и очень важная.
Кроме того, я вас буду иногда путать, называя операторы операциями. В общем то, это достаточно близкие понятия. Разница лишь в том, что оператор — это символ в языке программирования, а операция — это действие, которое выполняется с помощью этого символа. Например,
Оператор + выполняет операцию сложения
Оператор * выполняет операцию умножения
Домашнее задание придумайте сами. У вас пока недостаточно знаний об операторах и выражениях, чтобы грамотно использовать их в своих программах.
Выражения, операнды, операции
Тема 11
При выполнении программы осуществляется обработка данных, в ходе которой с помощью выражений вычисляются и используются различные значения. Выражение представляет собой конструкцию, определяющую состав данных, операции и порядок выполнения операций над данными. Выражение состоит из операндов, знаков операций и круглых скобок. В простейшем случае выражение может состоять из одной переменной или константы. Тип значения выражения определяется типом операндов и составом выполняемых операций.
Операнды представляют собой данные, над которыми выполняются действия. В качестве операндов могут использоваться константы, переменные, элементы массивов и функции.
Операции – это действия, которые выполняются над операндами. Операции бываю унарными и бинарными. Унарная операция относится к одному операнду, и ее знак записывается перед операндом, например, — x. Бинарная операция выражает отношение между двумя операндами, и знак ее записывается между операндами, например, x + y.
Круглые скобки используются для указания порядка выполнения операций.
Если в операциях используется несколько данных, то их типы должны быть либо идентичными, либо совместимыми.
В зависимости от типов операций и операндов выражения могут быть арифметическими, логическими и строковыми.
Арифметические выражения (АВ). Результатом выполнения АВ является число, тип которого зависит от типов операндов, составляющих это выражение. В АВ можно использовать числовые типы (целочисленные и вещественные), арифметические операции и функции, возвращающие числовое значение.
Тип значения АВ определяется типом операндов и операциями. Если в операции участвуют целочисленные операнды, то результат операции также будет целочисленного типа. Если хотя бы один из операндов принадлежит к вещественному типу, то результат также будет вещественным. Исключением является операция деления, результат которой всегда вещественный.
Унарные арифметические операции + (Сохранение знака) и –(Отрицание знака) относятся к знаку числа и не меняют типа числа.
Примеры. Пусть в программе есть строки:
var a, b, c, d: integer; x, y: real;
c:= a div b; d:= a mod b; //c=3, d=1
y:=sin(a) + b/exp(x) — 12.5; // y=sin a + b/ e x – 12,5
Над данными целочисленного типа можно выполнять также следующие побитовые (поразрядные) операции:
o Shl– сдвиг влево;
o Shr– сдвиг вправо;
o And– И (арифметическое умножение);
o Or– ИЛИ (арифметическое сложение);
o Xor– арифметическое исключающее ИЛИ;
o Not– Не (арифметическое отрицание).
Особенностью побитовых операций является то, что они выполняются над операндами поразрядно.
Примеры. Пусть в программе есть строки:
var a, b, c, d: integer;
c:= Not a; // a= 0101, Not (0101) = 1010 =10 дес .
d:= a And b; // b=1001, 0101 And 1001 = 0001 = 1 дес .
Логические выражения (ЛВ). Результатом выполнения ЛВ является логическое значение Trueили False. Такие выражения чаще всего используются в условных операторах и операторах цикла. Логические выражения могут содержать:
o логические константы Trueи False;
o логические переменные типа Boolean;
o операции сравнения (отношения);
o логические операции;
Результат выполнения логических операций при применении их к логическим выражениям (операндам логического типа) будет логического типа (Boolean). Логические операции And, Or, Xor являются бинарными, операция Not– унарной.
Электроника для всех
Блог о электронике
Комбинация знаков операций и операндов, результатом которой является определенное значение, называется выражением. Знаки операций определяют действия, которые должны быть выполнены над операндами. Каждый операнд в выражении может быть выражением. Значение выражения зависит от расположения знаков операций и круглых скобок в выражении, а также от приоритета выполнения операций.
В языке СИ присваивание также является выражением, и значением такого выражения является величина, которая присваивается.
При вычислении выражений тип каждого операнда может быть преобразован к другому типу. Преобразования типов могут быть неявными, при выполнении операций и вызовов функций, или явными, при выполнении операций приведения типов.
Операнд — это константа, литерал, идентификатор, вызов функции, индексное выражение, выражение выбора элемента или более сложное выражение, сформированное комбинацией операндов, знаков операций и круглых скобок. Любой операнд, который имеет константное значение, называется константным выражением. Каждый операнд имеет тип.
Если в качестве операнда используется константа, то ему соответствует значение и тип представляющей его константы. Целая константа может быть типа int, long, unsigned int, unsigned long, в зависимости от ее значения и от формы записи. Символьная константа имеет тип int. Константа с плавающей точкой всегда имеет тип double.
Строковый литерал состоит из последовательности символов, заключенных в кавычки, и представляется в памяти как массив элементов типа char, инициализируемый указанной последовательностью символов. Значением строкового литерала является адрес первого элемента строки и синтаксически строковый литерал является немодифицируемым указателем на тип char. Строковые литералы могут быть использованы в качестве операндов в выражениях, допускающих величины типа указателей. Однако так как строки не являются переменными, их нельзя использовать в левой части операции присваивания.
Следует помнить, что последним символом строки всегда является нулевой символ, который автоматически добавляется при хранении строки в памяти.
Идентификаторы переменных и функций. Каждый идентификатор имеет тип, который устанавливается при его объявлении. Значение идентификатора зависит от типа следующим образом:
Вызов функций состоит из выражения, за которым следует необязательный список выражений в круглых скобках:
выражение-1 ([ список выражений ])
Значением выражения-1 должен быть адрес функции (например, идентификатор функции). Значения каждого выражения из списка выражений передается в функцию в качестве фактического аргумента. Операнд, являющийся вызовом функции, имеет тип и значение возвращаемого функцией значения.
Индексное выражение задает элемент массива и имеет вид:
Тип индексного выражения является типом элементов массива, а значение представляет величину, адрес которой вычисляется с помощью значений выражение-1 и выражение-2.
Обычно выражение-1 — это указатель, например, идентификатор массива, а выражение-2 — это целая величина. Однако требуется только, чтобы одно из выражений было указателем, а второе целочисленной величиной. Поэтому выражение-1 может быть целочисленной величиной, а выражение-2 указателем. В любом случае выражение-2 должно быть заключено в квадратные скобки. Хотя индексное выражение обычно используется для ссылок на элементы массива, тем не менее индекс может появляться с любым указателем.
Индексные выражения для ссылки на элементы одномерного массива вычисляются путем сложения целой величины со значениями указателя с последующим применением к результату операции разадресации (*).
Так как одно из выражений, указанных в индексном выражении, является указателем, то при сложении используются правила адресной арифметики, согласно которым целая величина преобразуется к адресному представлению, путем умножения ее на размер типа, адресуемого указателем. Пусть, например, идентификатор arr объявлен как массив элементов типа double.
Таким образом, чтобы получить доступ к i-тому элементу массива arr можно написать аrr[i], что, в силу сказанного выше, эквивалентно i[a]. При этом величина i умножается на размер типа double и представляет собой адрес i-го элемента массива arr от его начала. Затем это значение складывается со значением указателя arr, что в свою очередь дает адрес i-го элемента массива. К полученному адресу применяется операция разадресации, т.е. осуществляется выборка элемента массива arr по сформированному адресу.
Таким образом, результатом индексного выражения arr[i] (или i[arr]) является значение i-го элемента массива.
Выражение с несколькими индексами ссылается на элементы многомерных массивов. Многомерный массив — это массив, элементами которого являются массивы. Например, первым элементом трехмерного массива является массив с двумя измерениями.
Для ссылки на элемент многомерного массива индексное выражение должно иметь несколько индексов заключенных к квадратные скобки:
выражение-1 [ выражение-2 ][ выражение-3 ] …
Такое индексное выражение интерпретируется слева направо, т.е. вначале рассматривается первое индексное выражение:
Результат этого выражения есть адресное выражение, с которым складывается выражение-3 и т.д. Операция разадресации осуществляется после вычисления последнего индексного выражения. Отметим, что операция разадресации не применяется, если значение последнего указателя адресует величину типа массива.
Рассмотрим процесс вычисления индексного выражения mass[1][2][2].
Если было бы указано mass [1][2], то результатом был бы указатель на массив из трех элементов типа int. Соответственно значением индексного выражения mass [1] является указатель на двухмерный массив.
Выражение выбора элемента применяется, если в качестве операнда надо использовать элемент структуры или объединения. Такое выражение имеет значение и тип выбранного элемента. Рассмотрим две формы выражения выбора элемента:
В первой форме выражение представляет величину типа struct или union, а идентификатор — это имя элемента структуры или объединения. Во второй форме выражение должно иметь значение адреса структуры или объединения, а идентификатор — именем выбираемого элемента структуры или объединения.
Обе формы выражения выбора элемента дают одинаковый результат. Действительно, запись, включающая знак операции выбора (->), является сокращенной версией записи с точкой для случая, когда выражению стоящему перед точкой предшествует операция разадресации (*), примененная к указателю, т.е. запись
в случае, если выражение является указателем.