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

如果大括号中的语句为真,则返回 1,但在中间,为 leftT 分配正确的值有什么意义?

4

2 回答 2

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)并且您无法分配给它。

于 2012-06-21T14:42:29.373 回答
1

如果两者t.left同时t.rightnull或者不是null 那么lf就是,1否则就是0

你也有一个错字在那里。该行应该是

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

注意==两个空检查之间的。

于 2012-06-21T14:42:03.877 回答