需要嵌套循环解释

时间:2013-05-23 20:12:39

标签: nested-loops

这是一个非常基本的问题,但未能找到明确的解释。为什么下面的代码为k提供30?

我只是想了解这种机制,但出于某种原因,我无法理解这一点。我知道我们首先开始查看内部for循环 - 我们得到10次迭代,直到number2达到10(k变为10,数字1变为24.但是下一步是什么?

int number1(4), number2, k = 0;
        while (number1 < 10) 
        {
            for (number2 = 1; number2 <= 10; number2++)
                ++k;
                number1 = number1 + 2; 
    }
        cout << k << endl;

2 个答案:

答案 0 :(得分:2)

这一行:

number1 = number1 + 2;

不在内循环中。假设使用C / C ++,如果不使用花括号将代码包装在循环内,则只将loop指令后的第一行作为循环代码进行求值。

单个外循环迭代中发生的情况如下:

  1. 内循环运行10次。
  2. k增加了10次。
  3. 你掉到了外圈。 number1增加2。
  4. 外环重复3次。因此k增加3 x 10次。

答案 1 :(得分:1)

我在下面的代码中添加了括号。

它与上面的代码相同,但更清晰。

int number1(4), number2, k = 0;
    while (number1 < 10) 
    {
        for (number2 = 1; number2 <= 10; number2++)
        {                                             //Added the brackets
            ++k;
        }                        
        number1 = number1 + 2; 
}
    cout << k << endl;

你的缩进是愚蠢的