Логические операции И и ИЛИ - PullRequest
1 голос
/ 14 сентября 2011

Почему следующий код выводит 1 вместо 0?a || b должно дать мне 1 и 1 && 0 это 0, верно?Я не думаю, что логические операции оцениваются справа налево.

int main()
{
    printf("%d\n", 1 || 1 && 0);
    return 0;
}

Ответы [ 3 ]

7 голосов
/ 14 сентября 2011

&& имеет более высокий приоритет, чем ||.(Например, умножение имеет более высокий приоритет, чем сложение.)

3 голосов
/ 14 сентября 2011

Это из-за приоритета оператора. В Си оператор && имеет более высокий приоритет, чем || оператор, поэтому он оценивается первым.

0 голосов
/ 30 апреля 2012

Это происходит от развития логического мышления (булева арифметика), возможно, даже от разработки аппаратного обеспечения с использованием транзисторно-транзисторной логики и аппаратных языков более низкого уровня (например, VHDL). Мы обычно делаем двухслойную логику, первый слой AND и второй OR. Наиболее типичная ситуация - минимизация схемы [1].

Как правило, вы комбинируете комбинации входных сигналов как входы И-портов, а выходы И-портов как входы ИЛИ-портов.

[1] http://en.wikipedia.org/wiki/Circuit_minimization

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...