2010-04-02 69 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); 
    } 
} 

没关系,这是Java代码,输出是 一个:11,B:1,C:10 ,我相信C作为爪哇在这种情况下的作用相同如果语句与逻辑OR

这是因为第二个条件(b ++ == c)如果第一个条件在'OR'运算符中是真的,永远不会执行。

这里有一个“NAME”。我只是不记得它是什么。 有谁知道这叫做什么?

回答

10

短路评估。

+0

同意。有一篇关于这个主题的维基百科文章,包括一个表格,用各种编程语言调用* short-circuit *和* greedy *逻辑运算符:http://en.wikipedia.org/wiki/Short-circuit_evaluation#Support_in_common_programming_languages – stakx 2010-04-02 15:33:57

5

这就是所谓的逻辑运算符的short-circuit行为:

随着短路的版本中,随后的子表达式的评估一旦子表达式的值为false废弃(在& &的情况下)或者是真(在||的情况下)。