For循环初始化

GIL*_*ESH -1 c++ loops for-loop visual-studio-2010 visual-c++

所以我想知道我是否可以在for循环的声明中声明一个变量.这段代码有效吗?

for (int a = 0;a < len + 1;a++);
Run Code Online (Sandbox Code Playgroud)

在什么范围a内存在?它会在for循环之外无效,还是我仍然可以访问它?

另外,我是否可以在单个for循环语句中声明或初始化2个变量?

for (int a = 0, b = len + 1;a < b;a++);
Run Code Online (Sandbox Code Playgroud)

这是一个有效的陈述吗?

Jos*_*eld 6

两者都是完全有效的,因为for语句的初始化部分(称为for-init-statement)是表达式语句简单声明.你的两个例子都是简单的声明 - 第二个只有两个声明符.

for-init语句中声明的变量范围是for循环本身,因此它在for循环外不可用(第6.5.3/3节):

如果for-init-statement是声明,则声明的名称范围将扩展到for语句的末尾.