我们正在做一个作业,比较不同边缘的权重,返回true或false,我只需要有人在这里解释老师的代码

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将包含uv之间的最小值,而big将包含最大值。如果u == vbigsmall将具有相同的值。

您可以获取更多信息here


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

10-04 10:45