2016-01-22 128 views
0

一直在环顾一些C++,并在几个类中注意到这一点,intellisense显然抛出了一个错误,但此代码以前的工作。不要求修复只是询问它会如何工作。继承我的循环

for(int i = 0; i < PACKAGE_MAX; i++) 
    m_Package.push_back(&m_PrePackage[i]); 

for(i = 0; i < PACKAGEPAIR_MAX; i++) 
    m_PackagePair.push_back(&m_PrePackagePair[i]); 

没有他们嵌套下一个声明进行宣布的i。这继续了几个for循环。这是一个旧的.net方法吗?

当然,即使想要在i = 0时启动,它最终会在循环语句的最后从0跳到6,对于第2个循环也是2跳。但这只是我阅读一些旧的来源。

+0

我不知道我理解正确的问题,但这些循环没有身体周围的括号,所以身体只有一行(缩进的一个)。换句话说,程序首先完全运行第一个循环,然后将'i'设置为零并完全运行第二个循环,依此类推。 – jkiiski

+1

变量'i'可能在与这两个循环相同的范围内声明。第一个循环在其范围内重新声明'i'是不好的做法,但是合法。 – Archimaredes

+2

我不确定我是否也理解了这个问题。但是如果你想知道为什么可以在第二个循环中重用在第一个中声明的变量,那么可以使用[Visual Studio扩展](https://msdn.microsoft.com/en-us/library/84wcsx8x.aspx)来执行该操作,但C++标准声明它不应该编译。 – BlackDwarf

回答