2010-04-02 3 views
3

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); 
    } 
} 

Ok, это Java-код и выход : с 11, б: 1, с: 10 И я считаю, что C действует так же, как Java в этом случаеIf-оператор с логическим ИЛИ

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

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

ответ

10

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

+0

Согласен. В этой статье есть статья в Википедии, в том числе таблица, которую вызывают * короткозамкнутые * и * жадные логические операторы на разных языках программирования: http://en.wikipedia.org/wiki/Short-circuit_evaluation#Support_in_common_programming_languages – stakx

5

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

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

Смежные вопросы