视觉未声明的标识符?

pic*_*ony 1 c++ visual-c++

我正在使用visual studio 2010,当我做类似的事情时

for(int i = 0, j = 0; i < 10; i++)
{
        if(m_Var == 1)
            j++;
}

if(j == 0)//This line errors undeclared identifier
    DoSomething();
Run Code Online (Sandbox Code Playgroud)

j在for循环中声明了为什么它会出错"未声明的标识符"?

另一个例子是

for(int i = 0; i < 10; i++)
{
        m_Var1++;
}

for(i = 0; i < 200; i++)//This line errors undeclared identifier
{
        m_Var2++;
}
Run Code Online (Sandbox Code Playgroud)

那个代码错误,即使它是在for循环中声明的,但为什么呢?有没有办法做到这一点,而不必i在循环之前声明,但在循环中声明它,而不是像上面的例子?

jua*_*nza 5

在第一个示例中,j仅存在于循环的范围内

for(int i = 0, j = 0; i < 10; i++)
{
        if(m_Var == 1) j++;
}  // i, j exist no longer
Run Code Online (Sandbox Code Playgroud)

在第二个例子中,同样适用于i.它的范围是第一个循环.你甚至可以在没有循环的情况下检查它:

{
  int i = 0;
} // end of scope, end of i

i++; // error, 
Run Code Online (Sandbox Code Playgroud)