C ++:for循环的范围?

时间:2010-09-04 00:07:03

标签: c++ loops scope

#include <iostream>
using namespace std;

int main() {
    int i;
    for(i=0; i <= 11; i+=3)
        cout << i;
    cout << endl << i << endl;
}

输出为:0 3 6和9然后一旦它退出循环12。 循环内外的i地址显示相同的

我需要知道的是:for循环中的i是否与for循环外部初始化的i相同,因为变量i首先在我创建的for循环之前初始化了吗?

6 个答案:

答案 0 :(得分:11)

是的,循环中的i与循环外部的i相同,因为你只声明了一次。

如果出于某种原因你希望它不同(我强烈推荐它,你应该为不同的变量选择不同的名称)你可以在for循环中重新声明i:

for (int i = 0; i ...

答案 1 :(得分:4)

与'我'var

相同
#include <iostream>
using namespace std;

int i = 0;

int main() {
    int i;
    for(i=0; i <= 11; i+=3)
        cout << i;
    cout << endl << i << endl;
    cout << endl << ::i << endl;
}
我是12岁

::我是0

答案 2 :(得分:2)

为了在C ++(以及C语言)中创建新对象(变量),您必须明确地定义它。在您的程序中,您只有一个变量定义 - int i;。这立即意味着那里只有一个变量i。任何其他i都没有机会,无论任何“for循环范围”或其他任何内容。

答案 3 :(得分:1)

只有一个'i'变量。你只是在foor循环中分配一个值。

答案 4 :(得分:1)

这里只存在一个变量 - 是的,循环中的i与退出循环后输出的变量相同。但是,变量仅作为循环的一部分初始化,而不是之前。

答案 5 :(得分:0)

表单的for-loop

for (init condition; expression) statement

完全等同于:

{
    init
    while (condition)
    {
        statement
        expression;
    }
}

所以使用你的代码:

    int i;
    {
        i=0;
        while (i <= 11)
        {
            cout << i;
            i += 3;
        }
    }
    cout << endl << i << endl;
}
你能告诉我吗? Andrey puts it best:如果你没有定义它,它就不存在。