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
私の答えを読んでください。 –