【笔记】 C++ bug大全

写程序老是调bug调半天,是时候总结一下了!

总体分析

  1. 对于程序总体逻辑没有很好的把握
  2. 使用了自己一知半解的内容
  3. 对细节没有把握好
  4. 编译器存在差距

具体内容

逻辑方面

  1. 先后顺序错误,比如要赋值给别的变量的变量已经被其他值改变了。
  2. 数学公式推理不正确或不全面。
  3. 如插入排序中变量赋值顺序(比如应该用for(int i = vec.size() - 1; i >= 0; i--)而非习惯性的for(int i = 0; i != vec.size(); i++))错误,导致把空值赋给有效值,如是重复。

变量方面

  1. 对于 unsigned 型做减法,减到比0还小,这时 unsigned 值会变到很大很大(用我的话说是翻上去一轮 / 否极泰来 / 一失足成千古恨)。

Best Practice:
尽量不要对 unsigned 值做减法。比如在第一象限的坐标肯定是x,y>0,但是再做向下移动到x轴上,如果这么写if (y - 1 >= 0) { /* do something */ },这个判断就起不到作用了。

  1. 左值可写性要考虑清楚,尤其涉及到 const 的时候。

Best Pract

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值