2013-11-26 102 views
0

我们正在做它比较了不同边的权重,返回赋值true或false,我只是需要有人在这里说明一下老师的代码Java的比较顶点字典顺序

boolean thisTest; 

int small = (thisTest = u < v) ? u : v, 
big = (thisTest) ? v : u; 

可能有人只是动作说明这里?

感谢

回答

5

它等同于:

if u < v 
    thisTest = true 
else 
    thisTest = false 

if(thisTest) 
    small = u; 
else 
    small = v; 

if(thisTest) 
    big = v; 
else 
    big = u; 

如果我们仔细观察:

int small = (thisTest = u < v) ? u : v; 

(thisTest = u < v)首先计算。所以如果u < vthisTest = true其他thisTest = false

所以,你必须:

boolean thisTest = u < v; 
int small = thisTest ? u : v; //ternary operator, if thisTest is true then small = u else small = v 
big = thisTest ? v : u; //same reason, if thisTest is true, then big = v else big = u 

总之,small将包含uvbig之间的最小值将包含最大。如果u == v,bigsmall将具有相同的值。

你可以有更多的信息here

另一个条件运算符是:?,可为一个if-then-else语句(在控制流 陈述中讨论被认为是 速记本课)。该运算符也称为 三元运算符,因为它使用三个操作数。

+0

和以前一样讨论:改变习惯并调用它*条件运算符* :) –