2017-05-21 4 views
-3

オペレータなどがC++でどのように動作するかを学びながら私はこのコードスニペットに遭遇しました。私の人生は分かりません。私はそれが "412"を出力することを知っています。しかし、私はそれがどういうことを理解していません。シンプルできれいな説明をいただければ幸いです。ありがとう!C++オペレータ、このコードスニペットはどのように動作しますか?

int main() 
{ 
int a[5] = { 1 }, b[] = { 4, 1, 2, 0, 3 }; 
for (int i = 0; i<5; i++) 
{ 
    if (!(a[i] = b[i])) break; // note: = not == 
    cout << a[i]; 
} 
cout << endl; 
} 
+0

動作しません。構文とセマンティクスを区別する必要があります。 –

+0

私の悪い、ソートされた書式設定。 –

+1

デバッガでコードをステップ実行し、各ステートメントの後で変数の値を調べることができます –

答えて

2

=オペレータは、左側の変数に右側の値を割り当て、値を返します。 !演算子は、引数が0の場合はtrueを返し、そうでない場合はfalseを返します。一緒にこれらを置く

、我々はループの1回の繰り返しには、以下のんと言うことができます:a[i]あれば(今b[i]に等しい)

  1. 割り当てb[i]
  2. a[i]にブレークゼロ
  3. ですa[i]を印刷します(現在はb[i]と同じです)。

コード全体でbの要素が最初の0に達するまで要素を出力します。その結果、 '412'が出力されます。

+0

ありがとうございます。 –

関連する問題