for(...)循环索引声明样式

Luc*_*ore 0 c++ syntax for-loop coding-style

代码之间是否存在任何差异:

int i = 0;
for ( i = 0 ; i < n ; i++ )
{
}
Run Code Online (Sandbox Code Playgroud)

for ( int i = 0 ; i < n ; i++ )
{
}
Run Code Online (Sandbox Code Playgroud)

也许如果有更多循环并且它们都使用相同的索引?

此外,第一个版本相当于:

int i = 0;
for ( ; i < n ; i++ )
{
}
Run Code Online (Sandbox Code Playgroud)

我知道优化器应该足够智能,至少可以生成相同的代码,但理论上是否存在任何差异?

Aam*_*mir 7

在第一种和第三种情况下,范围int i超出了for循环.在第二种情况下,范围是for循环,i如果您想稍后使用它,则必须重新声明.

是的,只有当你没有在前两行之间放置任何东西时,第一个版本才相当于第三个版本.如果你在其间添加一些代码,那么所有的赌注都会关闭.