← 返回 C++ 学习记录

C++ JOURNAL / 我的易错记录

调试与排错记录

保留真实遇到的现象,区分已知错误和仍需代码才能判断的问题。

按我的学习记录整理 · 示例用于帮助理解
这篇记录里

我遇到过的运行现象

  • 终端只输出一个数字。
  • 程序运行后窗口关闭。
  • VS Code 红色波浪线被误关闭。
  • 输入顺序导致输出结果奇怪。
  • 输入 1 0 0 0 后,结果为什么是 2?
  • 为什么有些程序输出 0?
  • 为什么会出现 7871 这样的意外数字?

这些记录没有附上每一次完整代码和运行过程,所以现在不为它们编造具体原因。一个异常数字本身,不足以判断是哪一行出了问题。

下次按这个顺序检查

  1. 是否运行了最新程序:代码保存、重新编译了吗?编译报错后是否还在运行旧文件?
  2. 输入:顺序和类型是否一致?逗号被谁读走?是否还有数据没有输入?输入是否失败?
  3. 变量初值:是否在获得确定的值前就使用了变量?
  4. 运算符:= / ==、<< / >>、% / / 有没有写反?
  5. 控制语句:else 或 for 后有没有多余分号?循环起点、终点、下标是否正确?
  6. 格式说明符:printf 的参数数量、类型和格式是否匹配?
  7. 数据类型:是否超出范围?是否进行了会改变数值的强制转换?
  8. 题意:要求求 f(x) 还是 f(f(x))?输出几个结果、保留几位小数?

可以临时输出中间变量,观察它从哪一步开始不符合预期;确认后再移除调试输出。错误记录应同时保留输入、预期结果、实际结果和对应代码。

窗口关闭与 system("pause")

system("pause"); 会调用系统命令。在 Windows 环境中,pause 命令常用于等待按键;它不是 C++ 程序必须使用的语句,也不是可移植的暂停方案。

在 C++ 中使用 system 应包含 <cstdlib>,可以写 std::system("pause");。这里仅解释曾经见过的写法,不把它加入每个示例。更直接的查看方式是在已经打开的终端中运行程序,结束后仍可查看输出。实际是否关闭取决于 VS Code 的启动方式。

红色波浪线不是运行结果

VS Code 的波浪线来自编辑器及相关扩展的代码检查。关掉它不等于代码没有错误,出现它也不等于程序已经运行失败。要分开查看编译器报错、终端运行结果与编辑器提示。

后续排错时,把代码和完整报错交给我处理即可,不需要自己修改网站程序。

返回全部学习记录 ↗