C语言中的SIGFPE错误?

C语言中的SIGFPE错误?,c,C,我有下面的代码,它计算一个数的阶乘中尾随零的数目。程序运行的第一个测试用例是10,但是当相同的代码运行17时,它在C中显示了一个SIGFPE错误? 谁能告诉我哪里出了问题 #include<stdio.h> #include<math.h> int main(){ int n,i=1,j,sum=0,l; scanf("%d",&n); while((n/(5^i))>1) { j=(n/(5^i));

我有下面的代码,它计算一个数的阶乘中尾随零的数目。程序运行的第一个测试用例是10,但是当相同的代码运行17时,它在C中显示了一个SIGFPE错误? 谁能告诉我哪里出了问题

#include<stdio.h>
#include<math.h>
int main(){
    int n,i=1,j,sum=0,l;
    scanf("%d",&n);
    while((n/(5^i))>1)
    {
        j=(n/(5^i));
        i++;
        sum=sum+j;
    }
    printf("%d",sum);
    return 0;
}

错误的是,您使用运算符的方式不对:它不是幂运算符,而是按位异或运算符。在C语言中没有幂运算符,而是数学库中的一个pow函数


另一方面。。。在哪里计算阶乘?

使用调试器逐步完成程序,并分析值以找出错误所在。另外,不要标记错误的语言谢谢!工作得很有魅力。多么愚蠢的错误,谢谢你指出:没有必要计算阶乘!后面的零只能通过数字来计算。