c++关于变量 作用域 的问题

来源:百度知道 编辑:UC知道 时间:2024/05/27 06:37:53
#include "stdafx.h"

int _tmain(int argc, _TCHAR* argv[])
{
for(int j=0;j<3;j++){}

for(j=0;j<3;j++){}

return 0;
}

//这段代码应该有问题啊(关于j的域的问题),怎么在.net2003上能编译通过,
//用到程序中也能运行,很奇怪啊,警告都没有,这是为什么??环境有漏洞吗?

//确实我同样在 2005上编译就报错了

我看了一下别人的文章
http://hi.baidu.com/froms/blog/item/4a8791dd44821d335882dd17.html也是关于这个域的问题,有意思!

请有兴趣的朋友解释一下,是不是标准不一样导致的?

如果采用C++标准的话
第二个for语句的j应是未定义的变量,应该报错
.net2003没报错可能是因为遇到未定义的变量会自动定义为无类型?
没用过.net2003 不知道它是如何处理的

标准没什么不一样的,只是不同编译器遵循标准的程度不同。
标准规定 for 头部定义的变量生命期只在 for 内 ,但 VC6.0 等却把它扩展到 for 所在的域 ,编译器的差别而已 。