0
我们正在做它比较了不同边的权重,返回赋值true或false,我只是需要有人在这里说明一下老师的代码Java的比较顶点字典顺序
boolean thisTest;
int small = (thisTest = u < v) ? u : v,
big = (thisTest) ? v : u;
可能有人只是动作说明这里?
感谢
我们正在做它比较了不同边的权重,返回赋值true或false,我只是需要有人在这里说明一下老师的代码Java的比较顶点字典顺序
boolean thisTest;
int small = (thisTest = u < v) ? u : v,
big = (thisTest) ? v : u;
可能有人只是动作说明这里?
感谢
它等同于:
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 < v
,thisTest = 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
将包含u
和v
和big
之间的最小值将包含最大。如果u == v
,big
和small
将具有相同的值。
你可以有更多的信息here:
另一个条件运算符是:?,可为一个if-then-else语句(在控制流 陈述中讨论被认为是 速记本课)。该运算符也称为 三元运算符,因为它使用三个操作数。
和以前一样讨论:改变习惯并调用它*条件运算符* :) –