这条线返回了什么?

时间:2012-06-21 14:39:17

标签: java

int lf = ((t.left==null) = (t.right==null)) ? 1:0;

如果较大括号中的语句为真,则返回1,但在中间,是否为lefT分配正确的值是什么?

2 个答案:

答案 0 :(得分:10)

通常你有一个等号分配。赋值的返回与表达式的RHS相同。

你在if中的表达式中使用等号,以便同时分配和检查结果。

// return first and third items added if they exist.
if ((list = GetItems()).Length > 2) { return list[0] + list[2]; } 

就在这里,你所拥有的只是一个编译器错误,因为t.left==null评估为(true/false)而你无法分配给它。

答案 1 :(得分:1)

如果t.leftt.right同时为nullnull ,则lf为{ {1}}否则为1

你也有错字。该行应

0

注意两个空检查之间的int lf = ((t.left==null) == (t.right==null)) ? 1:0;