我有一个同学问我这个问题,我不知道如何回答。
以下代码可以正常使用。
int x = 40;
int y = 35;
if (x > y)
{
int ans = x + y;
}
但是,下面的代码给出了一个错误,指出变量声明不允许存在。为什么不允许那里? NetBeans引发以下异常:无法编译的源代码 - 错误的树类型:
int x = 40;
int y = 35;
if (x > y)
int ans = x + y;
如果重要的话,我们正在使用NetBeans 8.0 Beta。
答案 0 :(得分:1)
与工作或不工作的问题不同,这是一个语法错误。 您不能在块之外进行变量声明。
为什么你甚至想要做第二种模式?谁将使用ans
?
答案 1 :(得分:1)
当您对变量进行范围调整时,它仅在该范围内可用。
if (stuff) {
int i;
// i available here
}
// i not available here
第一种类型,编译器不知道您以后是否会使用该变量。它并不认为在该块中创建变量有任何问题。
在第二种类型中,编译器知道只有一个语句,因为您没有创建{}
块。您创建的变量肯定不会被使用,因此编译器会提醒您永远不能使用您在那里定义的变量。