2016-10-02 12 views
-1

変数をリセットするかどうかの違いは何ですか?例えば、ここでなぜ変数をリセットする必要がありますか?

public static int Digits(int f)   
{ 
    int result = 0; 
    while (f != 0) 
    { 
     result += f % 10; 
     f /= 10; 
    } 
    return result; 
} 

int result = 0のために、私は、変数をリセットしましたが、なぜ私はこれを行う必要があると私はそれをしない場合は何が起こるのですか?

ありがとうございます。

+1

この宿題はありますか?あなたが少なくとも何が起こるかを見るためにそれを試すことができるように思えます。 –

+2

それをやり直してみてください。 – zerkms

+0

これは、変数の初期化と呼ばれ、変数を「リセット」しません。 –

答えて

1

C#コンパイラでは、変数から読み込むことが必要です。そうしないと、コンパイラは実行可能プログラムの代わりにエラーを生成します。

コンパイラがこれを必要とする理由は、変数が使用されたときに変数がの値が(つまり、この変数の値を保持するメモリの場所は、必然的にいくつかのの値を持っているので、実際には "変数を初期化するかどうか"という選択肢はありません。変数が持つ価値の有無を知ることです。

完全に未知で予測不可能な値を持つ変数を使用して計算を行うと、一般的に有用な結果が得られないため、誤った間違いを防ぐためにコンパイラは明示的に指示します。コンパイラがこれを行う必要がない言語(CやC++など)は、プログラマが正確にこの種のバグを書くことを許していることで有名です。

コンパイラが同じ目的を達成できた他の方法があることに注目することは興味深いものです。暗黙的にデータ型のデフォルト値(整数の場合はゼロ)に暗黙的に初期化することで、実際にはクラスフィールドでこれを正確に行います。この決定は、言語設計者の推論に依存します。

+1

ありがとうございます!今私は理解している..私は値を設定せずに変数を使用する場合、私はエラーが発生します。 あなたは私にいくつかのことを明らかにしました。 –

+0

私の推測では、あいまいさを解消する方法でC#が設計されていると思います。プログラマが変数を使用する前にインスタンス化するように強制することによって、その変数の値がどのようなものになるかは疑問ありません。それをデフォルト値に割り当てることさえ、人々にそのデフォルト値*が何であるかを見出させるでしょう。 – Abion47

+0

@ Abion47間違いなく、あなたは正しい。 –

関連する問題