Аддитивные операции
Аддитивные операции + и - группируются слева направо.Выполняются обычные арифметические преобразования. Для каж-дой операции имеются некоторые дополнительные возможности,связанные с типами операндов. аддитивное _ выражение: выражение + выражение выражение - выражение Результатом операции + является сумма операндов. Можно такжескладывать указатель на объект в массиве и значение любогоцелочисленного типа. Последнее преобразуется в адресноесмещение посредством умножения его на длину объекта, накоторый указывает этот указатель. Результатом является ука-затель того же самого типа, что и исходный указатель, кото-рый указывает на другой объект в том же массиве, смещенныйсоответствующим образом относительно первоначальногообъекта. Таким образом, если p является указателем объекта вмассиве, то выражение p+ 1 является указателем на следующийобъект в этом массиве. Никакие другие комбинации типов для указателей не раз-решаются. Операция + ассоциативна, и выражение с несколькими сло-жениями на одном и том же уровне могут быть переупорядоченыкомпилятором. -15- Результатом операции - является разность операндов.Выполняются обычные арифметические преобразования. Крометого, из указателя может быть вычтено значение любого цело-численного типа, причем, проводятся те же самые преобразова-ния, что и при операции сложения. Если вычитаются два указателя на объекты одинаковоготипа, то результат преобразуется (делением на длину объекта)к типу int, представляя собой число объектов, разделяющихуказываемые объекты. Если эти указатели не на объекты изодного и того же массива, то такое преобразование, вообщеговоря, даст неожиданные результаты, потому что даже указа-тели на объекты одинакового типа не обязаны отличаться навеличину, кратную длине объекта.Операции сдвига
|
|
Операции отношения
|
|
Операции равенства
выражение _ равенства: выражение == выражение выражение!= выражение Операции == (равно) и != (не равно) в точности аналогичныоперациям отношения, за исключением того, что они имеютболее низкий уровень старшинства. (поэтому значение выраже-ния a<b==c<d равно 1 всякий раз, когда выражения a<b и c<d имеют одинаковое значение истинности). Указатель можно сравнивать с целым, но результат будетмашинно-независимым только в том случае, если целым являетсяконстанта 0. Гарантируется, что указатель, которому присво-ено значение 0, не указывает ни на какой объект и на самомделе оказывается равным 0; общепринято считать такой указа-тель нулем.4.8. Побитовая операция 'и'
выражение _ и: выражение & выражение Операция & является ассоциативной, и включающие & выражениямогут быть переупорядочены компилятором. Выполняются обыч-ные арифметические преобразования; результатом являетсяпобитовая функция ' и ' операндов. Эта операция примениматолько к операндам целого типа.4.9. Побитовая операция исключающего 'или'
выражение _ исключающего _ или: выражение ^ выражение Операция ^ (знак надчеркивания, код в КОИ-8 0136) являетсяассоциативной, и включающие ^ выражения могут быть переупо-рядочены компилятором. Выполняются обычные арифметическиепреобразования; результатом является побитовая функция иск-лючающего ' или ' операндов. Операция применима только к опе-рандам целочисленного типа.4.10. Побитовая операция включающего 'или'
выражение _ включающего _ или: выражение | выражение -17- Операция | является ассоциативной, и содержащие | выражениямогут быть переупорядочены. Выполняются обычные арифметичес-кие преобразования; результатом является побитовая функциявключающего ' или ' операндов. Операция применима только коперандам целочисленного типа.4.11. Логическая операция 'и'
выражение _ логического _ и: выражение && выражение Операция && группируется слева направо. Она возвращает 1,если оба ее операнда отличны от нуля, и 0 в противном слу-чае. В отличие от & операция && гарантирует вычисление слеванаправо; более того, если первый операнд равен 0, то значе-ние второго операнда вообще не вычисляется. Операнды не обязаны быть одинакового типа, но каждый изних должен быть либо одного из основных типов, либо указате-лем. Результат всегда имеет тип int.4.12. Операция логического 'или'
|
|
Условная операция
условное _ выражение: выражение? выражение: выражение Условные выражения группируются слева направо. Вычисляетсязначение первого выражения, и если оно отлично от нуля, торезультатом будет значение второго выражения; в противномслучае результатом будет значение третьего выражения. Еслиэто возможно, проводятся обычные арифметические преобразова-ния, с тем, чтобы привести второе и третье выражения кобщему типу; в противном случае, если оба выражения являютсяуказателями одинакового типа, то результат имеет тот же тип;в противном случае одно выражение должно быть указателем, адругое - константой 0, и результат будет иметь тип указа-теля. Вычисляется только одно из второго и третьего выраже-ний. -18-