int lf = ((t.left==null) = (t.right==null)) ? 1:0;
如果较大括号中的语句为真,则返回1,但在中间,是否为lefT分配正确的值是什么?
答案 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.left
和t.right
同时为null
或null
,则lf
为{ {1}}否则为1
。
你也有错字。该行应
0
注意两个空检查之间的int lf = ((t.left==null) == (t.right==null)) ? 1:0;
。