【问题标题】:How this for loop works?这个 for 循环是如何工作的?
【发布时间】:2019-07-28 11:46:08
【问题描述】:

我是 C 编程新手。我遇到了 for 循环示例。 我不明白循环的某些部分。输出为 8。我不知道 b 如何递增到 4。

这是我的代码:

int a = 4;
int b = 2;
int result = 0;

for(int count = 0; count != b; count++) {
    result = result + a;
}

printf("a times b is %i\n", result);

return 0;

【问题讨论】:

  • 你不明白哪一部分?我猜它非常简单。这个count != b 即当2!=2 & 直到那个时间结果为8count->0 时它退出循环:0+4count->14+4 = > 8.
  • 我不明白 b 是如何增加到 4 的? 不,b 根本没有变化。要调试它,请在循环和分析中保留一个 printf() 语句。例如printf("b = %d\n",b);

标签: c loops


【解决方案1】:

有时,最简单的做法是让程序自行解释:

#include <stdio.h>
#include <stdlib.h>

int main(void){
    int a = 4;
    int b = 2;
    int result = 0;

    for(int count = 0; count != b; count++) {
        printf("a = %3d, b = %3d, count = %3d, result = %3d\n", a, b, count, result);
        result = result + a;
        printf("a = %3d, b = %3d, count = %3d, result = %3d\n", a, b, count, result);
    }
    printf("a = %3d, b = %3d\n", a, b);

    printf("a times b is %i\n", result);

    return 0;
}

输出

a =   4, b =   2, count =   0, result =   0
a =   4, b =   2, count =   0, result =   4
a =   4, b =   2, count =   1, result =   4
a =   4, b =   2, count =   1, result =   8
a =   4, b =   2
a times b is 8

如您所见,b 没有改变。当count 等于b 时,count 发生变化并退出循环。

【讨论】:

    【解决方案2】:

    变量b不递增,变量count0开始,在for loop递增。当count 变量变为2 时,循环结束。因此,循环运行两次(计数 0 和计数 1),结果为 4 + 4 = 8

    【讨论】:

      【解决方案3】:

      首先,count = 0b = 2 不同,因此循环开始。通过这样做,循环的第一次迭代给出了一个结果,

      result = 0 + 4
      

      由于循环结束并且count 变量应该继续count++,这意味着count = count + 1。因此,count = 0 + 1 = 1 再次与 b = 2 不同。

      再次进行循环,

      result = 4  + 4 # where the first number came from the result of first loop
      

      现在count++ 生成count = 2,现在与b = 2 的值相同。那么,循环的条件不匹配,count != 2,不再循环,打印值result = 8

      【讨论】:

      • print count = 8 ? 不,那是 result 变量而不是 count
      【解决方案4】:

      会执行2次

      count= 0 ==> 结果=0+4

      并且 count =1 ==> result=4+4 ==> result=8

      当它达到 count= 2 时 2!=2 部分将为假,我们将退出 for 循环

      【讨论】:

        【解决方案5】:

        循环只运行两次,我们可以像这样空运行循环: 变量的初始值:-> a = 4,b = 2,count = 0 和 result = 0

        loop first run -> 
        count = 0
        count != 2 -> that is ->  0 != 2  => true
        result = result + a   ->  0 + 4  = 4
        
        second run ->
        count = 1 
        count != b -> that is ->  1 != 2  => true
        result = result + a   ->  4 + 4 = 8
        
        third run ->
        count = 2
        count != b -> that is ->  2 != 2 => false 
        stop loop. 
        And the final resultent values are as follow: a= 4, b= 2 , count = 2 and result = 8
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-05-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多