代码:
#include <stdio.h>
int main() {
__int64_t MaxInt32 = __INT32_MAX__;
__int64_t sum32 = 1;
/*int32的最大阶乘, 不能溢出*/
for (__int64_t i = 1;; i++) {
if (sum32 * i > MaxInt32)
break;
sum32 *= i;
}
__int128_t MaxInt64 = __INT64_MAX__;
__int128_t sum64 = 1;
/*int64的最大阶乘, 不能溢出*/
for (__int128_t i = 1;; i++) {
if (sum64 * i > MaxInt64)
break;
sum64 *= i;
}
printf("%d %ld\n", (__int32_t)sum32, (__int64_t)sum64);
return 0;
}