我有下面的代码。
main = print $ sum [1..1000000]
当我运行时,我会看到堆栈溢出:
Stack space overflow: current size 8388608 bytes.
Use `+RTS -Ksize -RTS' to increase it.
我习惯了像Python这样的命令式语言,这些语言似乎对这样的计算没有问题:
sum(range(100000000)) # I'm not even using a generator.
4999999950000000
Haskell显然不同,但我不太明白导致堆栈溢出的原因是什么?引擎盖
可能重复:
给定以下C++代码:
unsigned char a = 200;
unsigned char b = 100;
unsigned char c = (a + b) / 2;
输出与逻辑上预期的相同,但是表达式(a + b)中不应该有整数溢出
显然,这里必须有一个整数提升来处理溢出,否则会发生一些我看不到的事情。我想知道是否有人能启发我,这样我就能知道它是什么,我可以也不应该依赖于整数提升和溢出。
我在和约会打交道,我遇到了一个奇怪的问题。如果将160乘以1440,60*24,则vba即使在使用long时也会产生溢出错误。但是,如果将160乘以86440,60*60*24,则不会发生溢出错误。有人知道为什么会发生这种事吗?我已经在周围找到了一份工作,但这没有任何意义。
谢谢你的帮助!
Sub test()
Dim numb As Long
numb=160*1440
numb=160*86400
End Sub
如果您注释掉了第一行,它将运行,没有溢出错误,但是溢出中的第一行会发生错误。
我有一个程序,它有一个溢出错误,每次我使用它。这是一个按揭利息计算器程序。
global t
t = 0
def time_until_last_payment():
global a
global b
global c
global d
a = float(input('what is the current mortage on the house? '))
b = float(input('what is the current interest rate? please give it in percent but