为了账号安全,请及时绑定邮箱和手机立即绑定

C语言计算一个数的阶乘的程序,为什么只能算到31?

C语言计算一个数的阶乘的程序,为什么只能算到31?

C
TYUTssh 2015-11-06 17:22:07
#include<stdio.h> int reslut(int n) {     int end;     if(n<0)     {         printf("输入错误!\n");         return 0;     }     else if(n==0||n==1)     {         end=1;     }     else     {         end=reslut(n-1)*n;     }     return end; } int main() {     int x;     scanf("%d",&x);     printf("%d的阶乘是%d\n",x,reslut(x));     return 0; }为什么只能算到31?32、33的时候显示结果为一个负数,34以及更大的数显示结果为0。小白求教,不懂为什么。
查看完整描述

2 回答

已采纳
?
紫泉

TA贡献26条经验 获得超3个赞

31!的阶乘已经超过int的最大值了,int的最大值为2的31次方-1,超过的时候就会溢出,变成负数。可以将int改成long,或是long long

查看完整回答
反对 回复 2015-11-06
  • TYUTssh
    TYUTssh
    谢谢你,刚学,问的比较low,见谅
?
TYUTssh

TA贡献1条经验 获得超0个赞

rusult写错了,见谅

查看完整回答
反对 回复 2015-11-06
  • 2 回答
  • 0 关注
  • 2663 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信