В выражениях в качестве операндов могут использоваться подвыражения. Подвыражение — это обычное выражение, заключенное в скобки.
Подвыражения могут использоваться для группировки частей выражения, точно так же, как и в обычной алгебраической записи. Использование подвыражений позволяет сократить количество операторов в программе, а значит и объем исходного текста (но не объем исполняемого кода), однако одновременно оно затрудняет отладку этой программы.
Если в качестве операнда используется
Значением литеральной строки является адрес первого элемента строки и синтаксически литеральная строка является немодифицируемым указателем на тип char. Литеральные строки могут быть использованы в качестве операндов в выражениях, допускающих величины типа указателей. Но т. к. строки не являются переменными, их нельзя использовать в левой части операции присваивания.
Следует помнить, что последним символом строки всегда является '\0', который автоматически добавляется при хранении строки в памяти.
Значение идентификатора зависит от типа следующим образом:
— идентификаторы переменных целых и плавающих типов представляют значения соответствующего типа;
— идентификатор переменной типа enum представлен значением одной константы из множества значений констант, указанных в перечислении. Значением идентификатора является константное значение. Тип значения — int, что следует из определения перечисления;
— идентификатор переменной типа struct или union представляет значение, определенное структурой или объединением;
— идентификатор, объявляемый как указатель, представляет указатель на значение, заданное в объявлении типа;
— идентификатор, объявляемый как массив, представляет указатель, значение которого является адресом первого элемента массива. Тип адресуемых указателем величин — это тип элементов массива. Отметим, что адрес массива не может быть изменен во время выполнения программы, хотя значение отдельных элементов может изменяться.
Значение указателя, представляемое идентификатором массива, не является переменной, и поэтому идентификатор массива не может появляться в левой части оператора присваивания;
— идентификатор, объявляемый как функция, представляет указатель, значение которого является адресом функции, возвращающей значения определенного типа и могущей иметь параметры определенного типа. Адрес функции не изменяется во время выполнения программы, меняется только возвращаемое значение. Таким образом, идентификаторы функций не могут появляться в левой части операции присваивания.
Вызов функции состоит из выражения, за которым следует необязательный список выражений в круглых скобках:
Выражение1 '('[Список выражений]')'
Значением
Индексное выражение задает элемент массива и имеет вид:
Выражение 1 '[' Выражение2 ']'
Тип индексного выражения совпадает с типом элементов массива, а значение представляет величину, адрес которой вычисляется с помощью
Значений
Обычно