2017-08-29 9 views
2

私は私の変数sum1を追加しようとしていますが、コンパイラがなぜこのif文の中で変数を使用できないのですか?

変数sum言いますが、私のif文の内部で割り当てられていない

です。私はそれを移動しようとしましたが、私が何をしても変数はまだ割り当てられていません。

static void Main() 
{ 
    int sum; 

    if(true) 
    { 
     sum += 1; 
    } 

    Console.Write(sum); 
    Console.ReadKey(); 
} 

私のコードを変更してこのエラーを修正し、コンパイラが不平を言わないようにするにはどうすればよいですか? sumに値が割り当てられるまで、それをある何定義された値を持っていない、あなたのコード

static void Main() 
{ 
    int sum = 0; 

    if(true) 
    { 
     sum += 1; 
    } 

    Console.Write(sum); 
    Console.ReadKey(); 
} 

が考えるに

int sum = 0; //or any other value 

+7

'sum'は_declared_で、_defined_ではありません - ループの外側に移動し、' int sum = 0; 'に変更します。 'result'の_declaration_もループから外してください –

+4

「未定義」とは言わず、「未割り当て」です*。それに値を割り当てます: 'int sum = 0;'エラーメッセージを注意深く読んでください。それはあなたに問題を伝えるものです。 – David

+0

''未定義/ヌル+整数 'とは何ですか? – Jodrell

答えて

10

変数sumは初期値を持っている必要があります定義されていません。

undefined + 1 

の結果がどうなるか、知ることができないコンパイラはそうエラーが発生し、コンパイルを停止します。

2

は(「私はタイプint型のものであることを合計を宣言しない」)と、それは定義され(または、を割り当て、むしろ)という値だ宣言される変数間の違いがあります。

あなたが評価する前に、値がは彼らにが割り当てられていることを確認してください:任意のローカル変数を使用する前に

static void Main() 
{ 
    // sum is declared as an int and an initial value of 0 is assigned to it 
    int sum = 0; 

    if(true) 
    { 
     sum += 1; 
    } 

    Console.Write(sum); 
    Console.ReadKey(); 
} 
0

を、それが初期化されるか、または定義する必要があります。 合計が定義されていないため、このエラーが発生しています。

0

これは、forループ内で合計が初期化されていないためです。問題を解決するには2つの方法があります。 sum変数を0で初期化するか(int sum = 0)。または、forループの前にsumを初期化します。 forループの終了後に累積結果を得たいと思うかもしれないので、2番目のオプションがより理にかなっていると思います。

関連する問題