首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么会有SIGFPE?

为什么会有SIGFPE?
EN

Stack Overflow用户
提问于 2011-06-04 12:29:53
回答 2查看 9.4K关注 0票数 3

出于某种原因,它曾经是有效的。但是现在我得到了一个SIGFPE……出什么问题了?

代码语言:javascript
复制
#include "usefunc.h"

long factorial(long num) {
    if (num > 1) {
        long counter;
        long fact = 1;
        for (counter = num; counter > 0; counter--) fact *= counter;
        return fact;
    }
    else return 0;
}

long combinations(long n, long k) {
    return (factorial(n)) / (factorial(k)*factorial(n-k));
}

int main()
{
    printf("How many rows of Pascal\'s triangle should I print?\t");
    int rows = GetInteger();
    long pArray[rows][rows];
    int counter;
    int counter2;
    for (counter = 1; counter <= rows; counter++)
    {
        int y = rows-counter;
        for (; y > 0; y--) printf("    ");
        for (counter2 = 0; counter2 <= counter; counter2++)
        {
            /*

                    THIS IS AN OUTPUT

            */
            printf("%9.0lu", (long) combinations(counter, counter2));
            pArray[counter][counter2] = (long) combinations(counter, counter2);
        }
        /*

                    THIS IS AN OUTPUT

        */
        printf("\n");
    }
    return 0;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-04 12:36:58

阶乘返回0,这会导致除以0错误。它不应该返回1吗?

代码语言:javascript
复制
jcomeau@intrepid:/tmp$ cat test.c; make test;./test
#include <stdio.h>
int main() {
 return printf("%f\n", 1L / 0);
}
cc     test.c   -o test
test.c: In function ‘main’:
test.c:3: warning: division by zero
Floating point exception
票数 8
EN

Stack Overflow用户

发布于 2011-06-04 12:33:11

我认为是您的combinations函数,您没有向我们展示它,因为您给出的代码都没有使用任何浮点。

SIGFPE does not mean ,即使这是名字的由来。@jcomeau已经正确地确定了为什么你会得到SIGFPE。

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

https://stackoverflow.com/questions/6234692

复制
相关文章

相似问题

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