需要嵌套循环解释



这是一个非常基本的问题,但我还没能找到一个明确的解释。为什么下面的代码给出k的结果是30 ?

我只是想了解这个机制,但由于某种原因,我无法理解这一点。我知道我们首先从内部的for循环开始——我们进行了10次迭代,直到number2达到10 (k变成10,number 1变成24)。但接下来呢?

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

这一行:

number1 = number1 + 2;

不在内循环中。假设在C/c++中,如果不使用花括号将代码包装在循环中,则只有循环指令后的第一行被计算为循环代码。

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

  1. 内部循环运行10次。
  2. k增加10倍。
  3. 你掉到外环。number1增加2

外循环重复3次。因此,k被增加3 × 10倍。

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

与上面的代码相同,但是更清晰一些。

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;

你的缩进是愚蠢的

最新更新