0

我有一个变量,它被初始化,然后在条件下动态重新分配;像这样:

int a;

if(b > 5) {
    int a = 10;
} else {
    int a = 1;
}

它给了我这个错误:

/path/to/file:4 a is already defined in int a = null;

为什么我不能重新分配这个变量?

4

3 回答 3

2

当你写

int a;

这是变量的声明。如果您尝试在相同的范围内再次以相同的方式编写它并且变量已经存在,那么编译器会抛出错误。

您无需重新定义变量a,只需像这样重新分配它:

int a = 0; // note that you need to initialize the local variables before using 

if(b > 5) {
     a = 10;
} else {
     a = 1;
}
于 2013-09-21T00:53:00.837 回答
2

您实际上是在重新声明variable a,而不是重新分配它的值。

尝试

a = 10;

代替

int a = 10;
于 2013-09-21T00:53:23.987 回答
2

使用内联条件运算符(“三元运算符”)的好时机:

 int a = (b > 5) ? 10 : 1;
于 2013-09-21T00:55:56.003 回答