小编Ash*_*ang的帖子

为什么数据类型为unsigned int时无限循环?

下面的代码运行得很完美.给出正确的输出但是,当我将变量的符号从signed更改为unsigned时,程序会运行到无限循环中.该程序是找到整数的阶乘.在我知道unsigned int的模块化行为的任何地方,任何变量的值都不会消极.

#include<stdio.h>

int main(void)
{
    int a[200], i,index, number, next, count, temp, test, x;

    scanf(" %d", &test);

    while(test--)
    {
        scanf(" %d", &number);
        a[0]=1;
        count=1;    //1 digit
        for(next=2;next<=number;++next)
        {
            index=0;temp=0;
            for(i=0;i<count;++i)
            {
                x=a[index]*next+temp;
                a[index]=x%10;
                temp=x/10;
                ++index;
            }
            while(temp!=0)
            {
                a[count++]=temp%10;
                temp=temp/10;
            }
        }
        for(i=count-1;i>=0;--i)
        printf("%d",a[i]);
        printf("\n");
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c

0
推荐指数
1
解决办法
1285
查看次数

标签 统计

c ×1