c++ - 相同的 C++ 代码导致 Windows 上的无限循环和 OSX 上的预期行为

标签 c++ windows macos while-loop iostream

这是我见过的最奇怪的事情之一。我在一所大学教授 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/

相关文章:

macos - 绑定(bind)到值时,NSPathControl 将不会显示 placeholderString

java - 如何在 Mac 上安装 Java 8

c++ - 从应用程序的音频接口(interface)创建音频缓冲区

c++ - 使用自动存储的指针应该包含析构函数吗?

c++ - mingw g++ 无法与库链接

mysql - 崩溃后 xampp 文件夹在新硬盘/Windows 上重用

java - 在 Windows 中使用 swig 从 Java 调用 c++ 函数,得到 java.lang.UnsatisfiedLinkError

linux - Linux 上的 Swift : how to specify compiler optimizations

c++ - PortAudio 遍历音频数据

C++ 类依赖