#c #compare #inequality
#c #Сравнить #неравенство
Вопрос:
Здравствуйте, я хочу понять, как компилятор сначала прочитал этот код с неравенством, а после этого проверил значение, как в этом примере
int a, b, c;
a = 4; b = 3; c = 5;
if (a > b == c)
{
cout << "Hello";
}
else
{
cout << "bye";
}
Комментарии:
1. То, что вы ищете, — это приоритет оператора .
2.
a > b == c
эквивалентно(a > b) == c
, благодаря правилам приоритета операторов и ассоциативности в C . Он сравнивает результатa > b
для равенства сc
. Посколькуa > b
при сравненииint
sbool
в C получается a (которое может быть численно равно только либо0
или1
), код здесь будет только когда-либо печататься"bye"
.
Ответ №1:
Как указывает OP, использование двух операторов подряд является неоднозначным синтаксисом. Языки разрешают это, используя таблицу приоритета операторов, чтобы решить, какой оператор вычисляется первым. Таблица для C находится здесь .