c中的for循环错误

For-loop error in c

我下载了一个程序,似乎在以下行有错误:

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;
}

你可能需要

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 循环将导致无限循环,从而导致您的问题。

你的问题是你使用了i--。所以循环将倒数,即 0、-1、-2、-3 等等,并且 总是 小于 SIZE OF DATA

正确的代码是

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

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

任选其一

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

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

1.You 正在开始从 0SIZE_OF_DATA 的循环。由于您正在朝着自己的规模前进,因此您应该增加迭代器 i.

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

备注 在您的代码中,您从 0 开始,并以 i-- 向负方向发展。 for 循环 i<SIZE_OF_DATA 的退出条件将始终保持为真。这可能会给您带来严重的问题

1.Segmentation 故障(访问数组 data[] 中的负索引,即 data[i] 并且 i 正在转向负整数)。

2.Infinite 循环,因为您的终止条件将始终为真。 (必须是false才能跳出循环)