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

大きな括弧内のステートメントが true の場合は 1 を返しますが、途中で、右の値を lefT に割り当てるポイントは何ですか?

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.rightどちらnullかである場合、それ以外の場合はです。null lf10

また、そこにタイプミスがあります。行は

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

==2 つの null チェックの間にあることに注意してください。

于 2012-06-21T14:42:03.877 に答える