我们正在做一个作业,比较不同边缘的权重,返回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
将包含u
和v
之间的最小值,而big
将包含最大值。如果u == v
,big
和small
将具有相同的值。您可以获取更多信息here:
另一个条件运算符是?:,可以认为是
if-then-else语句的简写(在控制流中讨论
本课的陈述部分)。此运算符也称为
三元运算符,因为它使用三个操作数。