我们正在进行一项任务,比较不同边缘的重量,返回真或假,我只需要有人在这里解释老师的代码
boolean thisTest;
int small = (thisTest = u < v) ? u : v,
big = (thisTest) ? v : u;
有人可以在这里解释一下这个操作吗?
由于
答案 0 :(得分: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 < 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语句的简写(在控制流程中讨论) 本课的语句部分)。这个运算符也称为 三元运算符,因为它使用三个操作数。