我已经下载了一个似乎在该行出错的程序:
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;
}
答案 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.您正在开始从0
到SIZE_OF_DATA
的循环。由于您正朝着您的规模发展,所以您应该增加迭代器i
。
2.你在这里正好相反; i
设置为最后一个位置,即SIZE_OF_DATA - 1
,现在您必须递减迭代器i
,直到达到0。
注意强>
在您的代码中,您从0开始,并使用i--
走向负面。 for
循环i<SIZE_OF_DATA
的退出条件将始终为true。这可能会导致严重的问题
1.分段错误(访问数组data[]
中的负索引,即data[i]
,我将转向负整数。
2.无限循环,因为您的终止条件始终为真。 (离开循环必须是假的。)