c - 数组的奇怪行为

标签 c arrays primes

这是我的代码,它在运行时不起作用(在 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/

相关文章:

c - 包括PJSIP-Library并编写makefile

android - 如何初始化 EditText 的二维数组?

java - 是否可以检查两个数组是否不相等

java - 使用 ArrayList 打印素数

java - 费马小定理的实现问题

c++ - 为什么我的 C++ 代码在使用 read(...) 函数后会导致段错误?

c - 在 C 中输入日期作为字符,无法弄清楚如何避免/

c - 在 C 中使用单行打印结构?

javascript - 检查每个数组值是否为 NaN

c - 我使用埃拉托色尼筛作为素性测试。为什么我得到 2297 是复合数?