【发布时间】:2011-01-04 12:02:06
【问题描述】:
我对计算器的理解是它们是基于堆栈的。当你使用大多数计算器时,如果你输入1 + 2 [enter] [enter],你会得到5。 1 被压栈,+ 是操作符,然后2 被压栈。第一个[enter] 应该从堆栈中弹出1 和2,添加它们以获得3,然后将3 推回堆栈。第二个[enter] 不应访问2,因为它实际上不存在于任何地方。
如何保留2 以便第二个[enter] 可以使用它?
2 是在 3 之前被推回堆栈还是保留在其他地方供以后使用?如果它被推回堆栈上,您是否可以通过反复执行[operator] [number] [enter] [enter]来导致堆栈溢出?
【问题讨论】:
-
只是一个观察,问题包含术语“堆栈溢出”......有趣:)
-
@kpax:有趣但并非完全巧合。尽管有误导性的标志,但这种编程现象正是该网站命名的原因。
标签: data-structures stack calculator