неравенство и == в if

#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 s bool в C получается a (которое может быть численно равно только либо 0 или 1 ), код здесь будет только когда-либо печататься "bye" .

Ответ №1:

Как указывает OP, использование двух операторов подряд является неоднозначным синтаксисом. Языки разрешают это, используя таблицу приоритета операторов, чтобы решить, какой оператор вычисляется первым. Таблица для C находится здесь .