这个程序进入无限循环

时间:2014-07-15 04:51:30

标签: c for-loop infinite-loop

#include <stdio.h>

int i;
int buf[20];

void main(){
    int x = 3;
    for(i = 6; i < 12; i+2){
        buf[i] = 5;
        printf("print1 : %d \n", i);
        buf[i+1] = 5;
        printf("print 2 :%d \n", i);
   }

   for(i = 6; i < 12; i++){
       printf("%d\n", buf[i]);
   }

}

此代码进入无限循环并仅打印 打印1:6打印2:6。 为什么呢?

3 个答案:

答案 0 :(得分:5)

因为你不修改i

for(i = 6; i < 12; i+2)更改为:

for(i = 6; i < 12; i+=2)
                    ^^

答案 1 :(得分:2)

您不会将值存回i这里for(i = 6; i < 12; i+2)执行此操作

for(i = 6; i < 12; i=i+2)

答案 2 :(得分:1)

问题是i + 2是一个表达式,它不会修改用于循环终止条件的变量i。只需将其更改为i += 2即可将i递增2。