Приоритет C операторов - PullRequest
       12

Приоритет C операторов

0 голосов
/ 06 февраля 2020

Я новичок в программировании. Я начал учиться с C. Я хотел узнать о приоритете операторов в следующих

if ( p == 2 || p % 2 )

Пожалуйста, помогите мне.

Ответы [ 2 ]

0 голосов
/ 06 февраля 2020

См. Приоритет операторов и Короткое замыкание .

  • Приоритет: приоритет оператора определяет, как операторы и операнды группируются в выражении когда имеется более одного оператора и они имеют разные приоритеты.

  • Ассоциативность: Ассоциативность операторов используется, когда в выражении появляются два оператора с одинаковым приоритетом.

Поскольку существует ||, требуется, чтобы сначала была оценена левая сторона ||, чтобы решить, нужно ли обрабатывать правую сторону ||. Если p == 2 вернет true, p % 2 не будет оцениваться.

Следовательно, сначала будет выполняться p == 2, а затем p % 2 (поскольку % имеет более высокий приоритет, чем ||).

Результат этих 2 будет затем оценен по ||.

0 голосов
/ 06 февраля 2020

Здесь

if ( p == 2 || p % 2 )

выглядит как

if( operand1 || operand2)

, где operand1 равно p == 2, а operand2 равно P % 2. Теперь логическая таблица истинности OR || равна

operand1  operand2  operand1 || operand2
0         0         0
0         1         1
1         0         1
1         1         1

Из приведенной выше таблицы ясно, что если первый операнд operand1 результат равен true , то результат всегда будет истинным & второй операнд operand2 не оценивается .

operand1 is ==>

  • p == 2 (предположим, p is 2)

  • 2 == 2 дает значение true, поэтому operand2 не оценивается и if блоки выглядят как

    if(true) { }

Предположим, что p равно 3, тогда operand1 то есть 2 == 3 ложно, т.е. operand2 оценивается, т.е. 3%2 то есть 1, что означает if блоки выглядят как

if(true)
{
}

Предположим, что p равно 4, тогда operand1 то есть 2 == 4 ложно, т.е. operand2 оценивается, т.е. 4%2 то есть 0, что означает if блоки выглядят как

if(false)
{
}

Надеюсь, что приведенное выше объяснение имеет смысл для вас.

По поводу ассоциативности и приоритета, пожалуйста, загляните на справочную страницу оператора

...