1

私は論理真理値表を生成するコンソール アプリケーションで遊んでいて、次の c# ステートメントにヒットしました。

bool a, b, c; //get inputs
if(a = b = c)
    {
    Console.WriteLine("sucess"); // print if 1
    }

ステートメントは true の場合にif(a = b = c)のみ true を返しますbool c(編集: 成功するにはすべての入力が同じである必要があると予想していました)。誰かがこのステートメントがどのように実行されているか説明できますか?

if( a== b == c )編集:好奇心からIV4の回答を見 て、コンパイルして動作しました。Edit2: ヘンクは正しい。a=false,b=true,c=false は true を返します。

4

2 に答える 2

2

=代入演算子==です。(比較演算子) とは異なります。これは、ステートメントの場合、 の値をにa = b = c代入してから に代入し、後で によって評価されることを意味します。cbaif

次のように評価されます。

b = c;
a = b;
if (a) { }

すべての変数が等しいことを確認したい場合は、次のようにする必要があります。

// no need to check if a == c
if (a == b && b == c) {  }
于 2013-08-18T10:13:54.993 に答える
0

@I4Vがあなたで言ったように、cの値をBに割り当ててからAに割り当てています。したがって、論理演算を行っていないため、IF常に評価されます。true

=代入であり==、論理演算に使用されます。

于 2013-08-18T10:13:58.840 に答える