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
或更大。
其他语言都一样
这段代码为什么会出现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
或更大。
其他语言都一样