2017-09-26 6 views
0

私は簡単にコードを書いて、私は疑問を持って0に等しい0を返します。 なぜですか?scanfの設定値は

+1

私はちょうどラインの間に落ちた。 –

+0

将来的には*あなたのコードを適切にフォーマットしてください*(私はあなたのためにこれをやっただけです)。もともと掲載されているように、読むことは不可能でした。 –

+2

また、コードが12行しかなく、なぜ動作しないのかわからないときは、「簡単なコード」とは言わない方がいいでしょう。 –

答えて

5

私は文字を入力したときに私はいくつかのエラーが発生すると思ったが、代わりに0を0に戻したのはなぜですか?

エラーが発生しましたが、無視しました。 scanf()の戻り値は、負でない場合、変換および割り当てが成功した入力フィールドの数を示します。入力をパターンに一致させることができない場合は、に一致するがあります。それが少なくとも1つの入力フィールド指示に先行するパターン内のポイントで発生するならば、それはフォーマットにあるより少ないフィールドが割り当てられることになります。確認するのが面倒だったら、scanf()の戻り値を使ってそれを検出できました。

Cは、システムプログラミング用に設計されています。迷惑な実行時メッセージの発行を要求するものではなく、予期しない入力やその他のエラーが発生した場合に、プログラムがどのような処理を行うべきかを前提にしていません。これは、あなたが選択した応答を指示するために必要な情報を提供します。

提示されたプログラムでは、エラーを無視して選択します。 scanf()によって値が割り当てられていない変数には、scanf()コールの前の値が保持されるため、エラーを無視すると、ユーザーが「0 0」と入力したときと同じ動作になります。

+0

コードフォーマットについての説明をありがとう私はここに新しいと私はそれが大丈夫だと思った、私は次回よりよくしようとします – rubhani

+0

@rubhani、あなたはこの答えがあなたの質問に適切に対処して満足しているその横にあるチェックマークを使用して、受け入れられた回答としてマークします。これは従来のものであり、ここでは答えの1つを選択する(そして現時点では他のものはありません)と期待しています。 –