-1

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

for (int a = 0;a < len + 1;a++);

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

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

for (int a = 0, b = len + 1;a < b;a++);

这是一个有效的陈述吗?

4

5 回答 5

6

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

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

如果for-init-statement是一个声明,则声明的名称的范围会扩展到for-statement的末尾。

于 2012-12-26T23:32:51.837 回答
2

您可以在 for 循环中声明 then ,这是这样做的正常方法。

通常它的范围与 for 循环的 {} 一样长。

Visual Studio(不确定其他编译器)可以设置标志以扩展 for 循环之外的范围。不要那样做。

您可以在 for 循环初始化中声明多个变量,只要它们属于同一类型即可。

于 2012-12-26T23:33:47.407 回答
1

它在循环之外是无效的,for因为它的范围是for循环,是的。是的,这也是一个有效的声明。

工作不工作

于 2012-12-26T23:31:47.837 回答
1

两者都是有效的,但在这种情况下:

for (int a = 0, b = len + 1;a < b;++a);

会更快

for (int a = 0;a < len + 1;++a);

因为 len+1 是预先计算的。

于 2012-12-26T23:45:52.437 回答
-1
for (int a = 0;a < len + 1;a++);

如果在此语句之前未声明“int i”,这完全没问题。

无法在 for 循环之外访问“a”。

for (int a = 0, b = len + 1;a < b;a++);

这也很好,但是

for (int a = 0;int b = len + 1;a < b;a++);

或者

for (int a = 0;double b = len + 1;a < b;a++);

以上两个语句都无效b'se你必须用“分号”替换“逗号”和

于 2021-01-21T15:11:33.493 回答