Scala 中的整数溢出

Int Overflow in Scala

这段代码为什么会出现Int溢出?

[代码]

val randomList = List(scala.util.Random.nextInt(), scala.util.Random.nextInt(), scala.util.Random.nextInt(), scala.util.Random.nextInt())
var listSum = 0
for (value <- randomList) {
    listSum += value
    println("value = " + value)
    println("listSum = " + listSum)
    println("\n")
}
println("sum is " + listSum)

[结果]

值 = 2078728151 listSum = 2078728151

值=-1367097617 listSum = 711630534

值 = 1543963641 listSum = -2039373121

值=-1351834340 listSum = 903759835

总和为 903759835

randomList: List[Int] = List(2078728151, -1367097617, 1543963641, -1351834340)

listSum: Int = 903759835

在Scala中Int是4字节长,所以最大的Integer是2**(32-1)-1,正好是

Int.MaxValue = 2147483647

任何高于该值的值都将是 Int.MinValue = -2147483648 或更大。 其他语言都一样