2017-08-29 90 views
2

我想补充1到我的变量sum但是编译器说为什么我不能在这个if语句中使用我的变量?

变量sum是未分配

我的if语句里面。我尝试过移动它,但无论我做什么变量仍未分配。

static void Main() 
{ 
    int sum; 

    if(true) 
    { 
     sum += 1; 
    } 

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

如何更改我的代码来解决此错误并停止编译器抱怨?

+7

'sum'是_declared_,而不是_defined_-将它移到循环外并将其更改为'int sum = 0;'。将结果的_declaration_从循环中移出 –

+4

它不会说它是“未定义”,它表示它是*“未分配”*。给它赋值:'int sum = 0;'仔细阅读错误信息,它们告诉你这个问题。 – David

+0

什么是'undefined/null +一个整数'? – Jodrell

回答

10

变量sum必须有一个初始值:

int sum = 0; //or any other value 

在你的代码

static void Main() 
{ 
    int sum = 0; 

    if(true) 
    { 
     sum += 1; 
    } 

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

想想,直到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循环内初始化,并且是基于没有给出的总和的前一个值。有两种方法可以解决问题。或者初始化总和变量为零(int sum = 0)。或者在for循环之前初始化sum。 我认为第二个选项更有意义,因为您可能想在for循环结束后获得累积结果。

相关问题