首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当‘`if (变量%2 == 0)’时程序崩溃

当‘`if (变量%2 == 0)’时程序崩溃
EN

Stack Overflow用户
提问于 2013-06-06 01:19:20
回答 2查看 1K关注 0票数 1

我在写一个能找到完美数字的程序。在阅读了这些完美数字之后,我偶然发现了一个清单:完全数列表。目前的产出是:

代码语言:javascript
复制
28         // perfect
496        // perfect
8128       // perfect
130816     // not perfect
2096128    // not perfect
33550336   // perfect

我决定创建数组,并将其与数字放在一起,数字将整个数字除以(不包括其余的)。因此,通过添加数组的所有元素,我将能够验证它是否是一个完美的数字。但是应用程序崩溃了,我不明白为什么:

代码语言:javascript
复制
#include <stdio.h>
#include <stdlib.h>

int main()
{
    unsigned long number;
    unsigned long arr2[100] = {0};
    int k = 0;

    for ( number = 0; number <= 130816; number++ )
        if ( 130816 % number == 0 )
            arr2[k++] = number;

    for ( k = 0; k < 100; k++ )
        printf("%lu", arr2[k]);

    return 0;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-06 01:21:57

你在这里做模数zero

代码语言:javascript
复制
if ( 130816 % number == 0 )

这是未定义的行为。如果您在1上启动for循环,它应该会修复这个问题。但是,由于N % 1 == 0适用于所有N,您可能需要从2开始。

根据C99标准,6.5.5 /5 (在C11中不变):

/运算符的结果是第一个操作数除以第二个操作数的商;%运算符的结果是余数。在这两个操作中,如果第二个操作数的值为零,则行为未定义。

票数 5
EN

Stack Overflow用户

发布于 2013-06-06 01:26:55

当number=0时,你被零除;

138816 % number涉及除法和余数。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16952292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档