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 易产出'能运行但结果错误'的代码,需用已知答案/测试验证逻辑正确性」
📚 《AI 编程实战三卷书》卷二 §8–12✓ 已核验 2026-05
🔧 试一试:别肉眼看,写个测试(6 分钟)
让 AI 写个有逻辑的函数(分页、日期差、金额计算)。别肉眼判断,让它配几个测试用例并跑。
你会看到:有些代码读起来完全合理,一跑测试才发现算错了(差一、边界、进位)。
怎么防:逻辑代码一律用测试验证,不靠「看起来对」(接 m.8)。
✅ 小结
逻辑错里有一大类专门出在"边界"上。下一节单独拆这个高频来源:边界条件没处理。
下一节 → 陷阱 #13:边界条件没处理

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