If-оператор с логическим ИЛИ - PullRequest
3 голосов
/ 02 апреля 2010

 public class Test{
      public static void main(String args[]){
    int a = 0;
    int b = 1;
    int c = 10;
    if ( a == 0 || b++ == c ){
        a = b + c;
    }else{
        b = a + c;
    }
    System.out.println("a: " + a + ",b: " + b + ",c: " + c);
    }
}

Хорошо, это код Java, и вывод а: 11, б: 1, в: 10 И я считаю, что C действует так же, как Java в этом случае

Это потому, что второе условие (b ++ == c) никогда не будет выполнено, если первое условие истинно в операторе «ИЛИ».

Для этого есть «ИМЯ». Я просто не помню, что это. Кто-нибудь знает, как это называется ??

Ответы [ 2 ]

10 голосов
/ 02 апреля 2010

оценка короткого замыкания.

5 голосов
/ 02 апреля 2010

Это называется short-circuit поведение логического оператора:

В версиях с коротким замыканием оценка последующих подвыражений прекращается, как только подвыражение становится ложным (в случае &&) или истинным (в случае ||).

...