小编IMI*_*EET的帖子

为什么N!当 N>=34 时停止溢出 32 位输出变量?

大数字的变量溢出是否有任何限制?一本关于阶乘的 C 书中有一个练习。

我的代码:

#include <stdio.h>

int main(void) {
    unsigned int n, fn, counter;
    //puts("enter nonnegative int");
    //scanf("%u", &n);
    n = 1;
    while (n != 34) {
        fn = n;
        counter = n - 1;
        while (counter > 0) {
            fn *= counter;
            counter--;
        }
        printf("%u\n", fn);
        n++;
    }
}
Run Code Online (Sandbox Code Playgroud)

注释行用于调试。

此代码打印从 n(1) 到 34 ( 'while(n!=34)')的数字的阶乘,但如果将其增加到 36 之类的值,它将在前 34 个输出后仅打印 0。我知道大部分输出都溢出了,并且对这些大数字的控制非常糟糕。

但是,我想知道导致这些零发生的限制是什么。

c factorial

-1
推荐指数
1
解决办法
118
查看次数

标签 统计

c ×1

factorial ×1