for语句里的变量生命周期有关问题

for语句里的变量生命周期问题。
在for语句括号里声明的变量,在dev   c++里会将变量的生命周期限制在循环里面,而VC却将它的生命周期继续延续到文件结尾。我到底该用哪种习惯呢?

比如在以下代码中:
#include <iostream>
using   namespace   std;
int   main()
{  
        for(int   i=100;i <=300;i++)
        {
                cout < <i < <endl;
        }
        cout < <i+1 < <endl;
        system( "pause ");
        return   0;
}

如果在dev   c++中,编译是无法通过的,错误如下:
H:\C++\test.cpp   In   function   `int   main() ':  
H:\C++\test.cpp   name   lookup   of   `i '   changed   for   new   ISO   `for '   scoping  
H:\C++\test.cpp       using   obsolete   binding   at   `i '  
但是如果在VC下就可以。
如果在循环之后再定义一次int   i   =   301;
dev   c++是通过了,但是VC又通不过了。
两个不同标准之间,我该如何选择呢?
先谢过~~~~~~~~

------解决方案--------------------
vc6 对标准支持不好
你用vs2005 就会得到和devcpp一样的结果了
------解决方案--------------------
局部变量的生命周期在定义的{}两个花括号中间。

VC通不过是不对的,按照dev c++标准走是正确的。
------解决方案--------------------
VC的不够标准,dev的符合标准,如果你要考虑移植性,建议还是分开定义变量名
------解决方案--------------------
vc6对标准的支持一塌糊涂
你试试这个:

const int i=5;
int ia[i];

vc6就通不过

vc2003 vc2005就和标准靠近多了