c中的for循环错误

时间:2015-03-15 19:54:13

标签: c for-loop

我已经下载了一个似乎在该行出错的程序:

for(i=0; i<SIZE_OF_DATA; i--){ 

在main.c中,但作为一名新手程序员,我不太清楚如何解决它。

这是main.c:

#include <stdio.h>
#include "util.h"

#define SIZE_OF_DATA 10

int main(void) {
    int data[SIZE_OF_DATA];

    generateRandomData(data, SIZE_OF_DATA);


    int i;
    for(i=0; i<SIZE_OF_DATA; i--){
        printf("%d: %d\n",i,data[i]);
    }

    return 0;
}

3 个答案:

答案 0 :(得分:4)

您的问题是您使用i--。因此,循环将向后计数,即0,-1,-2,-3等等,并且始终小于SIZE OF DATA

正确的代码是

for(i=0; i<SIZE_OF_DATA; i++) {

否则你将拥有一个完美的无限循环:)

答案 1 :(得分:2)

您可能需要

for(i=0; i<SIZE_OF_DATA; i++)

而不是

for(i=0; i<SIZE_OF_DATA; i--)

i--表示i的值为0,然后是您不想要的-1,-2...SIZE_OF_DATA将是一个正值,因此for循环将导致无限循环,从而导致您的问题。

答案 2 :(得分:1)

选择任何一个

1。for(i=0; i<SIZE_OF_DATA; i++)

2。for(i=SIZE_OF_DATA -1 ; i>=0; i--)

1.您正在开始从0SIZE_OF_DATA的循环。由于您正朝着您的规模发展,所以您应该增加迭代器i

2.你在这里正好相反; i设置为最后一个位置,即SIZE_OF_DATA - 1,现在您必须递减迭代器i,直到达到0。

注意 在您的代码中,您从0开始,并使用i--走向负面。 for循环i<SIZE_OF_DATA的退出条件将始终为true。这可能会导致严重的问题

1.分段错误(访问数组data[]中的负索引,即data[i],我将转向负整数。

2.无限循环,因为您的终止条件始终为真。 (离开循环必须是假的。)