关于溢出问题之一二
今天刷题很不幸遇到溢出的问题,相信点进来看文章的你也是,那么我们来重温一下溢出的问题,希望能给你帮助。
直接上图,直面对比int (整型)、long long(长整型)和double(双精度)的取值范围。上图前,大致给出范围以有助记忆:
int:-2 * 109 ~ 2 * 109 ;
long long: -9 * 1018 ~ 9 * 1018 ;
double :-2 * 101024 ~ 2 * 101024
下面用实例证明,采用阶乘运算,计算23!,来看下结果吧:
int:
1
1
2
6
24
120
720
5040
40320
362880
3628800
39916800
479001600
1932053504
1278945280
2004310016
2004189184
-288522240
-898433024
109641728
-2102132736
-1195114496
-522715136
862453760
long long:
1
1
2
6
24
120
720
5040
40320
362880
3628800
39916800
479001600
6227020800
87178291200
1307674368000
20922789888000
355687428096000
6402373705728000
121645100408832000
2432902008176640000
-4249290049419214848
-1250660718674968576
8128291617894825984
double:
1.000000
1.000000
2.000000
6.000000
24.000000
120.000000
720.000000
5040.000000
40320.000000
362880.000000
3628800.000000
39916800.000000
479001600.000000
6227020800.000000
87178291200.000000
1307674368000.000000
20922789888000.000000
355687428096000.000000
6402373705728000.000000
121645100408832000.000000
2432902008176640000.000000
51090942171709440000.000000
1124000727777607700000.000000
25852016738884978000000.000000
相信看到这里,大家对溢出又有了更深刻的理解,我们下次错误见!