大数字的变量溢出是否有任何限制?一本关于阶乘的 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。我知道大部分输出都溢出了,并且对这些大数字的控制非常糟糕。
但是,我想知道导致这些零发生的限制是什么。