Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么较高范围的产品回答会导致kotlin为0?_Kotlin - Fatal编程技术网

为什么较高范围的产品回答会导致kotlin为0?

为什么较高范围的产品回答会导致kotlin为0?,kotlin,Kotlin,为什么(1..100)会减少产品工作量 >>> (1..100).toList().reduce { acc, i -> acc * i } 0 >>> (1..10).toList().reduce { acc, i -> acc * i } 3628800 谢谢基本上,价值溢出了。当您也使用long时,这一点非常清楚: fun main(args: Array<String>) { println("Max int: "

为什么
(1..100)
会减少产品工作量

>>> (1..100).toList().reduce { acc, i -> acc * i }
0
>>> (1..10).toList().reduce { acc, i -> acc * i }
3628800

谢谢

基本上,价值溢出了。当您也使用long时,这一点非常清楚:

fun main(args: Array<String>) {
    println("Max int: " + Int.MAX_VALUE)
    println("1..12 int: " + (1..12).toList().reduce { acc, i -> acc * i })
    println("1..12 long: " + (1L..12L).toList().reduce { acc, i -> acc * i })
    println("---")
    println("Max long: " + Long.MAX_VALUE)
    println("1..13 int: "  + (1..13).toList().reduce { acc, i -> acc * i })
    println("1..13 long: "  + (1L..13L).toList().reduce { acc, i -> acc * i })
}
在12之前,乘法的结果值始终小于
Int.MAX_值
,并且如上所示,使用Int和longs返回的结果是相同的


从13日开始,奥托,结果改变了。使用
int
s时,值溢出,结果开始出错<代码>长仍然有效(如您所见,返回值大于
Int.MAX\u value

简而言之,该值高于其限制。

reduce方法的结果与集合的元素类型相同,在本例中,该元素指的是
Int
。第一个值超过
Int
最大值
Max int: 2147483647
1..12 int: 479001600
1..12 long: 479001600
---
Max long: 9223372036854775807
1..13 int: 1932053504
1..13 long: 6227020800