int lf = ((t.left==null) = (t.right==null)) ? 1:0;
如果大括号中的语句为真,则返回 1,但在中间,为 leftT 分配正确的值有什么意义?
int lf = ((t.left==null) = (t.right==null)) ? 1:0;
如果大括号中的语句为真,则返回 1,但在中间,为 leftT 分配正确的值有什么意义?
通常你会有一个等号来分配。赋值的返回与表达式的 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)
并且您无法分配给它。
如果两者t.left
同时t.right
是null
或者不是null
,那么lf
就是,1
否则就是0
。
你也有一个错字在那里。该行应该是
int lf = ((t.left==null) == (t.right==null)) ? 1:0;
注意==
两个空检查之间的。