← 返回目录
p.12方法⏱ 约 5 分钟

陷阱 #12:看起来对,但逻辑错

能跑、不报错、却算出错的结果

🔎 最后验证 2026-05📚 来源:《AI编程实战三卷书》卷二 §8–12🧰 Claude Code✅ 81 人学过👁 146 次阅读
为什么学这个

这是所有坑里最难发现的一种:代码能跑、不报错、读起来也合情合理,但它算出来的结果是错的。没有红色报错提醒你,全靠你自己看出来——这正是"能跑≠对"最锋利的体现。

💡 打个比方

就像一个走得很准但其实快了 10 分钟的钟:它没坏、在正常走、你也信它,直到你因为它迟到才发现——它一直在"自信地报错误时间"。逻辑错的代码就是这样的钟。

这个坑长什么样

// 算平均分(❌ 逻辑错)
function average(scores) {
  let sum = 0;
  for (let i = 0; i < scores.length; i++) sum += scores[i];
  return sum / scores.length - 1;   // 多写了 - 1,结果一直偏低,但不报错
}
// 或者:折扣算成了加价、应该 >= 写成了 >、单位搞错(分/元)

亲手跑一下这个坑:三科成绩 80、90、100,平均分应该是 90。运行下面这段(就是上面那个有 bug 的函数),看它算出多少——它不报错,但答案是错的。然后试着找到并删掉那个 - 1,再运行,看是不是变成 90:

✍️ 动手写代码在浏览器里真实运行 · 安全沙箱
它能跑、不报错,但结果是错的。这就是'逻辑错'最阴险的地方——只能靠'用已知答案验证'抓出来。

为什么会犯 & 怎么识别

  • 为什么:AI 写出"形似正确"的代码很容易,但它不真正"理解"你的业务意图
  • 识别信号:没有报错,但你拿已知答案的例子一算,结果对不上

怎么防

  • 用"已知答案"验证:拿一个你心里有数的例子喂进去,看结果对不对(average([80,90,100]) 该是 90)
  • 写测试(m.8):测试就是用来抓这种"不报错但算错"的
  • 让它解释逻辑(m.6):"为什么这里要 -1?"——讲不通的地方就是 bug
❓ 测验
一段代码能跑、不报错,怎么判断它逻辑到底对不对?
⚠️ 避坑这类坑会'安静地'造成最大损失

报错的 bug 会立刻提醒你;逻辑错的 bug 悄无声息地输出错误结果,可能在算钱、算库存、算成绩时持续出错很久才被发现,损失最大。所以凡是有明确'正确答案'的逻辑,务必用例子或测试验证一遍,绝不能因为"能跑、不报错"就放行。

🤖 让 AI 自验逻辑(收藏)
这段计算逻辑,请你用 2-3 个'我能手算出答案'的具体例子走一遍,把每步中间结果和最终结果写出来,让我核对是否和正确答案一致。如果发现对不上,指出是哪一步逻辑错了。
🔎 来源与核验· 1 条,点开核对
本节每个关键论断都对应一个可追溯的来源 —— 这是本课程"靠谱、不过时"的底线。
「AI 易产出'能运行但结果错误'的代码,需用已知答案/测试验证逻辑正确性」

🔧 试一试:别肉眼看,写个测试(6 分钟)

让 AI 写个有逻辑的函数(分页、日期差、金额计算)。别肉眼判断,让它配几个测试用例并跑。

你会看到:有些代码读起来完全合理,一跑测试才发现算错了(差一、边界、进位)。

怎么防:逻辑代码一律用测试验证,不靠「看起来对」(接 m.8)。

✅ 小结

逻辑错里有一大类专门出在"边界"上。下一节单独拆这个高频来源:边界条件没处理。

下一节 → 陷阱 #13:边界条件没处理
智图软件的赞赏码
都看到这了,打个赏呗!
接下来 · p.13
陷阱 #13:边界条件没处理
继续读下一节 →