考虑一个带有计数器的
我看到许多关于
编辑:是的,我理解我可以将循环声明为
for
循环:for (int i = 0; i < 100; i++ /* `i` is visible here */) {
/* `i` is visible here */
}
/* `i` not visible here */
一切都好。我们说i
具有“块级”作用域。
然而,为什么在for
循环中声明的变量在i++
时不可访问?
例如,为什么j
在这里不在作用域内,即使它也具有“块级”作用域,并且是在i += j
之前声明的?
for (int i = 0; i < 100; i += j /* only `i` is visible here */) {
int j = 1;
/* `i` and `j` are visible here */
}
/* `i` and `j` are not visible here */
我看到许多关于
i
范围的问题,但没有关于for
循环括号内j
范围的问题。这是否意味着实际上还有另一个范围,即“for循环声明范围”,但没有人谈论它?如果是这样,我对Java或C#等规范中如何定义此范围以及程序员通常称其为什么范围感兴趣。编辑:是的,我理解我可以将循环声明为
for (int j, i = 0; i < 100; i += j)
,但这仍然表明for
循环声明的范围高于其花括号。