Devil12138 发表于 2014-9-6 10:32:44

为什么b的数值变大到17以上后会出现错误

#include <stdio.h>

void main()
{
        int fac(int a);
        int b,i;

        scanf("%d",&b);
        for(i=1;i<=b;i++)
        {
                printf("%d! =%d\n",i,fac(i));
        }
}


int fac(int a)
{
       register int x,z=1;
       
        for(x=1;x<=a;x++)
        {
                z*=x;
        }
        return z;
}

西瓜异族 发表于 2014-9-6 11:56:02

那么滴,你应该学学汇编。或者学学补码的知识喽!

西瓜异族 发表于 2014-9-6 12:02:11

http://blog.fishc.com/442.html

elvo 发表于 2014-9-6 12:39:47

溢出,int是有范围的。。

MyOrange 发表于 2014-9-7 13:02:55

溢出了,int类型的存储范围是2^31-1 到-2^31就是正的二十四亿多到负的二十四亿多
页: [1]
查看完整版本: 为什么b的数值变大到17以上后会出现错误