这是我见过的最奇怪的事情之一。我在一所大学教授 C++ 入门类(class),我的一位学生联系我说他的代码一直在不停地运行。我在类里面简单地浏览了他的代码,并没有立即看到任何明显的东西,所以我让他通过电子邮件将他的代码发给我。
在不做任何更改的情况下,我下载了他的代码并在我的机器上运行 - 并且运行良好。我能看到的唯一区别是我使用的是 OSX,而他使用的是 Windows。
这是代码:http://pastie.textmate.org/private/9rzpttixnuhudsvsm1yl4q
有什么想法吗?
已解决:PEBKAC 存在
问题实际上与学生输入的内容有关。我从来没有想过在提示存款时尝试输入字符串。
顺便说一句,关于最近对大学毕业生的“质量”的贬低评论:我不确定该评论是针对我还是针对我的学生,但我想简要说明一下处理这两种观点。
假设它是针对我的:我是该类(class)的助教,而不是主要讲师,我负责教授实验室作业。因此,“教授 C++ 入门类(class)”是指“实验室作业中涵盖的教学 Material ”。关于我自己的背景和经历,我不得不承认我感到有些被轻视。首先,我是一名 AI 研究人员,在一个主要是理论(阅读:逻辑和数学)的领域工作,我不必编写 C++ 代码。我将此问题发布到 Stack Overflow 的全部原因是因为我总能在这里找到有用且有创意的解决方案。我心里想,“这里有一些我没有立即看到的奇怪之处,但不用担心,SO 上的人已经知道了。”
总而言之:我正在尽我所能帮助这些 child 学习这些 Material ,而且效果很好。 这种态度对任何人都没有帮助。
假设它是针对我的学生:来吧,真的吗?他甚至不是 CS 专业的,这项作业是从类(class)的第三周开始的 - 他的第三周任何类型,永远。我宁愿不要在比赛的早期就劝阻他。
最佳答案
没有检查任何输入操作。有各种各样的行,例如
cin >> deposit;
如果从 stdin 中提取失败(即,如果流中的下一个东西在这种情况下不是有效的 double
),那么将在流上设置失败状态,并且后续的都不会来自标准输入的输入操作将成功,直到状态被重置。
由于您只检查循环条件中 cont
的值而不测试流状态,因此如果设置了失败状态,程序可能会不断循环。
关于c++ - 相同的 C++ 代码导致 Windows 上的无限循环和 OSX 上的预期行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3781135/