在for循环中声明和初始化变量

时间:2010-07-06 18:41:53

标签: c++ c for-loop declaration

我可以写简单吗

for (int i = 0; ...

而不是

int i;
for (i = 0; ...

在C或C ++中?

(变量i只能在循环中访问吗?)

7 个答案:

答案 0 :(得分:20)

在C ++中有效

在原版C中不合法。
但是在C99中被采用为C的一部分(当一些C ++特性被反向移植到C时) 使用gcc

gcc -std=c99 <file>.c

变量在for语句和循环语句中有效。如果这是一个块语句,那么它对整个块都有效。

for(int loop = 0; loop < 10; ++loop)
{
    // loop valid in here aswell
}

// loop NOT valid here.

答案 1 :(得分:18)

是的,它在C ++和C99中是合法的。

答案 2 :(得分:5)

在C99或C ++中执行此操作是完全合法的:

for( int i=0; i<max; ++i )
{
    //some code
}

及其while等价物是:

{
    int i=0
    while( i<max )
    {
        //some code
        ++i;
    }
}

答案 3 :(得分:3)

我总是将for(int i=0;i<somevalue;i++)作为在c和c ++中定义for循环的首选方法。{/ p>

就只能在循环中访问“i”而言,您必须关心您使用的变量名称。如果将“i”声明为循环之外的变量并将其用于其他内容,则在将相同的变量用于循环计数器时会导致问题。

例如:

int i = 10;
i = 10 + PI;
点击for循环并声明i = 0

时,

将自动更改

答案 4 :(得分:2)

是的,是的。但对于C,显然你的编译器需要处于C99模式。

答案 5 :(得分:2)

答案 6 :(得分:0)

如果你在循环中使用变量,那么每次在循环

中初始化它时它都会改变
int i = 0;
for(int e = 0; e < 10; e++)
{
 i = e;
}

现在我的价值每次都会改变