gpt4 book ai didi

C语言: Segmentation Fault

转载 作者:行者123 更新时间:2023-11-30 20:48:39 26 4
gpt4 key购买 nike

为了测试,我编写了一个代码来计算<50的素数。但我遇到了段错误。我通过 gdb 检查了代码,它显示“primes [index] = p;”是错的。但我真的不知道为什么以及如何解决它,请帮助我。非常感谢。

操作系统:Ubuntu 14.04

内核:3.19.0-33-generic

编译器:GCC 4.84

    #include  <stdio.h>
#include <stdbool.h>

int main(void)
{
int p, i, primes[50], index;
bool isprime;

primes[0] = 2;
primes[1] = 3;
index = 2;

for (p = 5; p <=50; p+2)
{
isprime = true;
for (i = 0; isprime && ((p/primes[i]) >= primes[i]); i=i+1)
{
if (p%primes[i] == 0)
isprime = false;
}

if (isprime == true)
{
primes [index] = p;
index = index +1;
}
}
printf ("\n");
for (i = 0; i <index; i=i+1)
{
printf("%i ", primes[i]);
}

return 0;
}

最佳答案

你有一个无限循环,因为这个

for (p = 5 ; p <= 50 ; p + 2)
// ^ has no effect

你的意思是

for (p = 5 ; p <= 50 ; p += 2)
  • 我怎么这么快就找到了这个?

    事实是我没有阅读代码,只是将其复制并粘贴到我最喜欢的文本编辑器中,然后使用 -Wall 进行编译,然后编译器告诉我

    stack-overflow.c:129:5: warning: statement with no effect [-Wunused-value]
    for (p = 5 ; p <=50 ; p + 2)

关于C语言: Segmentation Fault,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35179924/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com