这是一个非常基本的问题,但我还没能找到一个明确的解释。为什么下面的代码给出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++中,如果不使用花括号将代码包装在循环中,则只有循环指令后的第一行被计算为循环代码。
在单个外部循环迭代中发生的情况如下:
- 内部循环运行10次。
-
k
增加10倍。 - 你掉到外环。
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;
你的缩进是愚蠢的