为什么i的值在一些迭代后变为负值

时间:2013-09-07 14:39:07

标签: c

我创建了以下程序来查找 factorial 因子,但我无法理解为什么i的值在经过几次迭代后变为负数。

#include <stdio.h>

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

    printf("enter the number: ");
    scanf("%d", &a);

    printf("entered value is %d\n", a);

    for(i = 1; i < a; i++)
    {
        printf("iterating for a = %d\n", a);
        b = a % i;
        if(b == 0)
        {
            printf("%d\n", i);
        }
        else
        {
            printf("a = %d, i = %d, modulo = %d\n", b);
        }
    }
    return (0);
}

3 个答案:

答案 0 :(得分:2)

您最后i不打印printf。将其更改为:

printf("a = %d, i = %d, modulo = %d\n", a, i, b);

答案 1 :(得分:2)

修正:

printf("a = %d, i = %d, modulo = %d\n", b);

printf("a = %d, i = %d, modulo = %d\n", a, i, b);

此外,您的程序找不到factorial

b =1;
for(i = 1; i <= a; i++)    
    b*=i;
printf(" Factorial for a = %d \n", b);

答案 2 :(得分:1)

不,我没有变成0.我尝试这个代码进行6次和10次迭代。它没有给出负值。在我的情况下,它的给定值i = 1298可能是垃圾值。也许你在迭代次数上尝试的更多,这就是为什么经过一些迭代后i的负值。