我需要在for循环的开始时声明i
并重新初始化j
。但是,
int j;
for (int i = 0, j = 0; true;) { // Do sth }
说:无法在此范围内声明名为'j'的本地或参数,因为该名称在封闭的本地范围内用于定义本地参数。
int j;
for (j = 0, int i = 0; true;) { // Do sth }
说:无效的表达方式'int'
有办法吗?任何知识都会受到赞赏。
注释1 :我知道将j = 0
放在statemnt的前面,这不是我想要的。
注释2 :以下所有作品。
int i, j;
for (i = 0, j = 0; true;) { // Do sth }
。
for (int i = 0, int j = 0; true;) { // Do sth }
。
int i;
for (Foo(), i = 0; true;) { // Do sth }
答案 0 :(得分:4)
您的问题是,此行(如果在for循环之外使用):int i = 0, j = 0;
与int i = 0; int j = 0
完全相同。但是,您仍然可以做到这一点:
int j;
for (int i = j = 0; true;) { // Do sth }
答案 1 :(得分:2)
您需要做的就是
//int j;
for (int i = 0, j = 0; true;) { // Do sth }
当你做这样的事情
int i = 0, j = 0;
您要说的是创建一个int i
和int j
的新变量,显然您试图在同一范围内两次声明同一变量
或者您也可以
int i;
int j;
for (i = 0, j = 0; true;) { // Do sth }
更新
在循环之前,首先需要创建和使用j。在 替代版本i的范围不仅限于循环。一世 感谢可能的解决方法,但这不是我问的
没有解决方法,这是一个范围问题,如果您在其他范围中使用变量,则需要适当地确定变量的范围或相应地更改其名称。简单修复,如果在for之前声明i,请不要在同一范围内使用i。即更改i的名称,进一步向下
答案 2 :(得分:1)
我认为这解决了范围界定问题。
int j;
{
int i;
for (i = 0, j = 0; true;)
{
// Do sth
}
}