以下代码的结果是什么?

时间:2015-06-29 12:02:06

标签: c

为什么结果是7 ???我找不到日志:(

#include <stdio.h>
main() {
    int i, j, a = 1, b = 1;
    for (i = 1; i < 4; i++)
        for (j = 1; j < 3; j++)
            a = a + b;
    printf("a=%d", a);
}

3 个答案:

答案 0 :(得分:2)

结构如下所示

- Outer `for` loop
 - inner `for` loop
     - instruction

所以“指令”(语句/块)将执行内部for循环计数次数,用于外部for循环计数次数。

基本上说的是,将b的值添加到a的最新值(以重复方式)以获取a的当前值。现在,为“外部”时间做这个,为此,对“内部”次数做同样的事情。

for循环==&gt; 3次,
内部for循环==&gt; 2次

因此,最终价值= 3*2 (increment) + (initial) = (3*2)*1 + 1 = 7

答案 1 :(得分:1)

结果为7,因为b初始化为1并且整个时间保持为1。外循环运行3次(1,2,3),内循环运行2次(1和2),因此有6次运行,其中b被添加到a(初始化为1)。 1 + 6 = 7。

答案 2 :(得分:1)

在这种情况下,您应该添加监视并逐行调试代码。我相信快捷方式是F11。关于为什么你的代码输出是7 ... 内循环运行六次。 J循环两次 - 1,2,(当它是3时结束),并且我循环三次(1,2,3,4 - 结束)......总共2 X 3 = 6.

由于b是&#39; 1&#39;,您基本上将数字1加到六次。由于以&#39; 1&#39;开头,输出为:

a = 1 + 1 + 1 + 1 + 1 + 1 + 1 = 7