所以我想知道是否可以在 for 循环的声明中声明一个变量。此代码有效吗?
for (int a = 0;a < len + 1;a++);
a
会存在于什么范围内?它会在 for 循环之外无效,还是我仍然可以访问它?
另外,我是否可以在单个 for 循环语句中声明或初始化 2 个变量?
for (int a = 0, b = len + 1;a < b;a++);
这是一个有效的陈述吗?
所以我想知道是否可以在 for 循环的声明中声明一个变量。此代码有效吗?
for (int a = 0;a < len + 1;a++);
a
会存在于什么范围内?它会在 for 循环之外无效,还是我仍然可以访问它?
另外,我是否可以在单个 for 循环语句中声明或初始化 2 个变量?
for (int a = 0, b = len + 1;a < b;a++);
这是一个有效的陈述吗?
两者都是完全有效的,因为语句的初始化部分for
(称为for-init-statement)要么是表达式语句,要么是简单声明。您的两个示例都是简单声明-第二个示例只有两个声明符。
在for-init-statement中声明的变量的范围是for
循环本身,因此它在循环之外不可用for
(第 6.5.3/3 节):
如果for-init-statement是一个声明,则声明的名称的范围会扩展到for-statement的末尾。
您可以在 for 循环中声明 then ,这是这样做的正常方法。
通常它的范围与 for 循环的 {} 一样长。
Visual Studio(不确定其他编译器)可以设置标志以扩展 for 循环之外的范围。不要那样做。
您可以在 for 循环初始化中声明多个变量,只要它们属于同一类型即可。
两者都是有效的,但在这种情况下:
for (int a = 0, b = len + 1;a < b;++a);
会更快
for (int a = 0;a < len + 1;++a);
因为 len+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你必须用“分号”替换“逗号”和