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就和标准靠近多了
在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就和标准靠近多了