当前位置: 首页 > 知识库问答 >
问题:

“for”循环中的“for”循环能否使用相同的计数器变量名?

贺飞
2023-03-14

for循环中,我是否可以对for循环使用相同的计数器变量?

或者这些变量会相互影响吗?以下代码应该为第二个循环使用不同的变量,例如j,还是i可以?

for(int i = 0; i < 10; i++)
{
  for(int i = 0; i < 10; i++)
  {
  }
}

共有3个答案

盖博简
2023-03-14

你可以。但是你应该知道is的范围。如果我们用i_1调用外部i,用i_2调用内部i,那么is的范围如下:

for(int i = 0; i < 10; i++)
{
     // i means i_1
     for(int i = 0; i < 10; i++)
     {
        // i means i_2
     }
     // i means i_1
}

你应该注意到,它们并不相互影响,只是它们的定义范围不同。

姜志行
2023-03-14

首先,这是绝对合法的:代码将编译并运行,重复嵌套循环的主体10×10=100次。嵌套循环内的循环计数器i将隐藏外循环的计数器,因此两个计数器将相互独立地递增。

由于外部i是隐藏的,嵌套循环体中的代码只能访问嵌套循环的i值,而不能从外部循环访问i。在嵌套循环不需要访问外部i的情况下,这样的代码是完全合理的。然而,这可能会给读者带来更多困惑,因此最好避免编写此类代码,以避免“维护责任”

注意:即使两个循环的计数器变量具有相同的标识符i,它们仍然是两个独立变量,即两个循环中使用的变量不同。在两个循环中使用相同的变量也是可能的,但代码很难读取。下面是一个例子:

for (int i = 1 ; i < 100 ; i++) {
    for ( ; i % 10 != 0 ; i++) {
        printf("%02d ", i);
    }
    printf("%d\n", i);
}

现在两个循环使用相同的变量。然而,需要一段时间才能弄清楚这段代码在不编译它的情况下做了什么(演示);

凌声
2023-03-14

您可以使用相同的名称(标识符)。这将是一个不同的对象。它们不会相互影响。在内部循环中,无法引用外部循环中使用的对象(除非您对此做出特殊规定,比如提供指向它的指针)。

这一般是不良作风,容易混乱,应避免。

只有当内部单独定义时,对象才会不同,就像您所显示的int i一样。如果使用相同的名称而不定义新对象,则循环将使用相同的对象并相互干扰。

 类似资料:
  • 问题内容: 在下面的示例代码中,是否真的需要counter = 0,还是有更好,更多的Python方法来访问循环计数器?我看到了一些与循环计数器有关的PEP,但它们要么被延迟要么被拒绝(PEP 212 和PEP 281)。 这是我的问题的简化示例。在我的实际应用程序中,这是通过图形完成的,整个菜单必须每帧重新绘制一次。但这以易于复制的简单文本方式进行了演示。 也许我还应该补充一点,我正在使用Pyt

  • 问题内容: 在遍历列表的Python循环中,我们可以编写: 并巧妙地遍历列表中的所有元素。有没有办法知道循环中到目前为止我循环了多少次?例如,我要列出一个清单,在处理完10个元素之后,我想对它们进行处理。 我考虑过的替代方案可能是: 要么: 是否有更好的方法(就像)来获得到目前为止的迭代次数? 问题答案: pythonic的方法是使用:

  • 问题内容: 我有这个代码: 它显然不会编译,因为在匿名类中需要使用final。但是我不能将它定下来,因为事实并非如此。你会怎么做?一种解决方案是复制它,但我认为可能会有更好的方法: 编辑 只是为了清楚起见,为了示例,我在这里使用了Runnable,问题实际上是关于匿名类的,它可以是其他任何东西。 问题答案: 我认为您的解决方案是最简单的方法。 另一种选择是将内部类的创建重构为一个为您完成的工厂函数

  • 我正在编写一个计算e^x值的方法。我在python中实现它的方式如下。 这将很好地返回e^x的值。但是,当我尝试在c#中实现相同的方法时,它没有输出与python中相同的值。以下是c#中的实现。 起初,这段代码的输出是一个无穷大符号。为了解决这个问题,我只是减少了循环运行的次数。在c#中,循环只运行10次,代码的输出非常接近于python中循环运行100次的输出。我的问题是,在不同的编程语言中,两

  • 我需要构造一组变量,其中变量应基于2部分构造:a)name b)一个用value[1]加强的数字。对于不断增加的数字,我使用了for循环。我设法创建了一个字符串,参见test1,但没有增加变量名称,参见test2。 鉴于下面提供的错误代码,我假设R不希望我使用变量名中的“paste0”来构造某些东西。 我的R代码: “测试1”的结果: 我得到的test2错误是: “test2”的预期结果是:

  • 在for循环中,为不同的变量分配一个值。已经赋值的变量将从下一次迭代中获得赋值。最后,两个变量的值相同。该代码用于验证文件中的数据。当我打印这些值时,它会为第一次迭代打印正确的值,但在下一次迭代中,第一次迭代中指定的值会更改。当我在for循环中打印$value3和$value4的值时,它会为$value4显示null,为$value3显示一些值,但在下一次迭代中,$value3的值会被$value