这是我的代码,它在运行时不起作用(在 java 中工作正常)。
但是如果我换行
primeNumber[size] = counter;
对于
primeNumber[i] = counter;
程序不会在运行时崩溃。有人知道为什么 C 不接受该命令 primeNumber[size] = counter;
谢谢!
#include <stdio.h>
int main(void){
int primeNumber[90];
primeNumber[0] = 2; //start with 2
int size = 1;
int divisible = 0;
int i = 0;
int counter = 3;
while(counter <= 100){
divisible = 0;
for(i = 0; i <= size; i++){
if(counter%primeNumber[i] == 0){
divisible++;
break;
}
}
if(divisible == 0){
primeNumber[size] = counter;
size = size + 1;
}
counter++;
}
for(i = 0; i <= size; i++){
printf("\n prime: %d", primeNumber[i]);
}
return 0;
}
最佳答案
您在 for
中有错误循环初始值为 size
.由于您使用 i <= size
, i
达到 1
在第二次迭代期间和 primeNumber[1]
未初始化。使用 i < size
相反。
你在上一个for
也有同样的问题(使用 printf),因为你增加了 size
更改 primeNumber
中的值后, primeNumber[size]
不会被初始化。
注意:对于这个错误,您的代码应该只是出现异常行为,而不是崩溃。
关于c - 数组的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29541349/