变量不能重定义,但下头代码为什么可以呢

变量不能重定义,但下面代码为什么可以呢?
#include <iostream>

using namespace std;

int main()
{
    int i = 100;   //定义i
    int sum = 0;
    for(int i = 0; i != 10; i++) //定义i
        sum += 1;
    cout <<i<<" "<<sum<<endl;
    return 0;
}
//我的理解难道是因为作用域不同的原因造成的吗?还是其他原因呢,望大神能给个标准答案
------解决思路----------------------
你试试把循环外面的变量i定义删除,然后尝试引用i去操作,就会发现编译器提示未定义,so就很清楚了,根本不是同一个变量,所以也不存在重定义。
------解决思路----------------------
如楼上所说,正是作用域的原因
可以参见一下——http://blog.****.net/yunyun1886358/article/details/5632087

http://wenku.baidu.com/link?url=ZpmfWlOyOvx15SpoUA5-_ojaDVKATTxKGzbeC7t87FOjVUJ2IWMWFlBIjWSMyDv7-Hvidc9bl5Tcyi2lRAa-E-5X-nFTfrXn2aZ9X_XAp9y