int lf = ((t.left==null) = (t.right==null)) ? 1:0;
大きな括弧内のステートメントが true の場合は 1 を返しますが、途中で、右の値を lefT に割り当てるポイントは何ですか?
int lf = ((t.left==null) = (t.right==null)) ? 1:0;
大きな括弧内のステートメントが true の場合は 1 を返しますが、途中で、右の値を lefT に割り当てるポイントは何ですか?
通常、等号を割り当てる必要があります。割り当てられたの戻り値は、式の 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;
==
2 つの null チェックの間にあることに注意してください。