Понимание булевой инструкции в C

У меня есть следующий фрагмент кода:

boolean calcula_A(int x, Tabla t)
{
    int i;
    boolean b;
    i = x + 1;
    b = 0;
    while((b == 0) && (i != N))
    {
        b = b || t[x] == t[i];
        i = i + 1;
    }
    return b;
}

Проблема в том, что я не понимаю действия инструкции: b = b || t[x] == t[i];.

0
задан 08.11.2019, 03:03
2 ответа

Я думаю, что лучший способ это понимать состоит в том, чтобы помещать это в if

if(b || t[x] == t[i]){

}

, Если ты имеешь cГіdigo наверху, только он войдет в условие, если b = true, или если t[x] == t[i] - true. Поскольку у тебя это есть твоя эта переменная b, он возьмет стоимость условия, true или false. Если бы со стоимостью, перешедшей в переменные он вошел в условие, b был бы true а false. Я надеюсь объясниться хорошо. Приветствие.

0
ответ дан 10.11.2019, 22:26
  • 1
    Тогда если я не понимаю плохо, если выполняется эта condició n ¿ harí в instrucció n: i = i + 1? – NRG-38 08.11.2019, 02:19
  • 2
    Ло hará хотя он не будет выполнен, только, что следующее возвращение, saldrá While – Jon Zubizarreta Iturria 08.11.2019, 02:20
  • 3
    Большое спасибо, я думаю, что уже я это понял хорошо. – NRG-38 08.11.2019, 02:23
  • 4
    Нет, которого ;) – Jon Zubizarreta Iturria 08.11.2019, 02:25
  • 5
    Все же как замечание, типы в C - bool не boolean. И в while deberí схвати обусловливать это как while (b & & i! =N), так как b, если это booleano – Jon Zubizarreta Iturria 08.11.2019, 02:27

Чтобы это понимать, ты должен знать предшествование из операторов, это, в quГ© команда работают операции, если нет parГ©ntesis определяя порядок. В твоем случае, у оператора равенства == есть большее предшествование, чем у оператора OR lГіgico ||. Тогда это как имение следующих parГ©ntesis:

b = b || t[x] == t[i];

          |
          V

b = (b || (t[x] == t[i]));

В конце концов, результат сохраняет в переменной b.

0
ответ дан 10.11.2019, 22:26