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;
注意==两个空检查之间的。