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

use*_*ser 10 c c++ for-loop declaration

我可以写简单吗?

for (int i = 0; ...
Run Code Online (Sandbox Code Playgroud)

代替

int i;
for (i = 0; ...
Run Code Online (Sandbox Code Playgroud)

在C或C++?

(并且变量i只能在循环内访问吗?)

Mar*_*ork 20

它在C++中有效

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

gcc -std=c99 <file>.c
Run Code Online (Sandbox Code Playgroud)

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

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

// loop NOT valid here.
Run Code Online (Sandbox Code Playgroud)


Nik*_*sov 18

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


rub*_*nvb 5

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

for( int i=0; i<max; ++i )
{
    //some code
}
Run Code Online (Sandbox Code Playgroud)

它的while等价物是:

{
    int i=0
    while( i<max )
    {
        //some code
        ++i;
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 我只是澄清了"i"的范围.在调用`continue`之前你总是可以注意有一个`++ i`,否则,你有一个有效的点. (4认同)
  • `for`和`while`循环并不完全相同.考虑如果"某些代码"包含"continue"语句会发生什么. (3认同)