long long n, prod, i;
n = 13;
prod = 1;
for (i = 1 ; i <= n ; i++) {
prod *= i;
}
printf("%d\n", prod);
printf("%d\n", sizeof(long long));
$ 1932053504
$ 8
結果顯然溢出。但我不明白爲什麼這是發生在long long
。 sizeof(int)
返回4 [字節],但產品相同。我究竟做錯了什麼?
爲什麼結果溢出? –
因爲使用python:'math.factorial(13)-2 ** 32 == 1932053504' – Nimitz14
請閱讀我的答案。 –