Приоритеты операций отношения

We use cookies. Read the Privacy and Cookie Policy

Приоритеты операций отношения

     Приоритет операций отношения считается меньшим, чем у операций + и -, и больше, чем у операции присваивания. Например, значение выражения:

х > y + 2

то же, что и выражения

х > (у + 2)

Это означает также, что выражение

ch = getchar( ) != EOF

эквивалентно

ch = (getchar( ) != EOF)

поскольку наличие у оператора !=, более высокого приоритета говорит о том, что она выполняется перед присваиванием. Поэтому значение переменной ch может стать либо 1, либо 0 ввиду того, что (getchar( ) != EOF) - условное выражение, значение которого присваивается переменной ch. Поскольку в примерах программ рассмотренных до сих пор, предполагалось, что переменная ch получает свое значение от функции getchar( ), мы использовали скобки, чтобы организовать выполнение операций в нужном порядке.

(ch = getchar( )) != EOF

Сами операции отношения можно разбить на две группы в соответствии с назначенными приоритетами:

     группа операций более высокого приоритета: <   <=   =>   >

     группа операций более низкого приоритета: = =   !=

     Подобно большинству остальных операций операции отношения выполняются слева направо. Поэтому под записью:

ех != wye == zee

подразумевается

(ex != wye) == zee

     Следовательно, в соответствии с правилами языка Си сначала проверяется, равны ли значения переменных ех и wye. Результирующая величина, равная 1 или 0 (истина или ложь), затем сравнивается со значением zee. Мы не видим реальной необходимости использовать подобного сорта конструкцию, но считаем своим долгом указать на возможные следствия принятого порядка выполнения операций.

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