一 写在开头

1.1 本节内容

分享一个刚刚调通的BUG的过程与结果。

二 排错过程与原因分析

今天在写代码的过程中发现了一个很有意思的BUG,触发该BUG的原因很简单,而且我之前也遇到过。看来这个BUG挺普遍的。首先,大家请看下面的这段代码。

1 int GetDistance(int A[], int n)
2 {
3     int i, sum = 0;
4
5     sum += (A[n-1] - A[0]) * (A[n-1] - A[0]);
6     for (i = n - 2; i >= 0; i++)
7         sum += (A[i] - A[i + 1]) * (A[i] - A[i + 1]);
8     return sum;
9 }

这段代码看上去一点问题也没有,但实际上,它却引发了段错误!问题出在哪呢?很简单,这段代码使用的是逆序的方式枚举的,也就是索引i是从大变到小的。但是,因为在平时写的多是顺序枚举,所以顺手将i--(自减)写成了i++(自增),于是程序奔溃了!

怎么避免这个问题?无法避免!只能自己心里多根弦——逆序枚举,i--;顺序枚举,i++。具体到上述代码,只要把for循环中的i++改成i--就好了。

1 int GetDistance(int A[], int n)
2 {
3     int i, sum = 0;
4
5     sum += (A[n-1] - A[0]) * (A[n-1] - A[0]);
6     for (i = n - 2; i >= 0; i--)
7         sum += (A[i] - A[i + 1]) * (A[i] - A[i + 1]);
8     return sum;
9 }

转载于:https://www.cnblogs.com/laizhenghong2012/p/9310265.html

逆序枚举时常犯的一个错误相关推荐

  1. 我犯了一个错误,您能指出吗?

    这是我最近在项目中犯的一个错误,您能指出吗? 这个项目在数据访问方面使用了传统的Repository模式.为此,我定义了一个Repository基类,可以让每个不同的Repository继承它: pu ...

  2. 农民约翰是一个惊人的会计_我的朋友约翰在CSS Grid中犯了一个错误。 不要像约翰-这样做。

    农民约翰是一个惊人的会计 It had been two years and John had no job. 已经两年了,约翰没有工作. John was a smart 20-something ...

  3. java 链表逆序代码_如何实现一个高效的单向链表逆序输出?(详解)

    需要考虑因素,高效应权衡多方面因素 数据量是否会很大 空间是否有限制 原始链表的结构是否可以更改 时间复杂度是否有限制 一个链表节点需要输出的元素有多个,例如链表中存的是自定义对象,有多个字段 题目. ...

  4. js参数使用时常犯的一个低级错误

    这个小小的细节浪费了我20分钟. 为了避免今后重蹈覆辙.截图记录下来~! 转载于:https://www.cnblogs.com/missthe/archive/2008/11/28/1342933. ...

  5. 我犯了一个错误,您能指出吗?(结论)

    其实许多朋友已经在回复中发现问题所在了,其中最早指出错误的是狼Robot同学,他说: 每个T都会使用一个新的连接. 泛型类中的静态变量会因为T的不同而产生不同的值,也就是说每个T所访问的静态变量都是独 ...

  6. python怎么将字符串逆序_python中如何把一个字符串顺序逆序反转的几种方法?

    如 a='123456789' 反转成 a='987654321' 第一种方法:使用字符串切片 >>> a='123456789' >>> a = a[::-1] ...

  7. 0-1背包 一维数组为什么逆序枚举

    https://blog.csdn.net/aidway/article/details/50726472

  8. 今天犯的一个错误,导致method GET must not have a request body

    事件经过: 1.在本地机器运行完全正常的程序,手动人工发包到测试环境上,后台日志频频报method GET must not have a request body. 2.使用postman发送pos ...

  9. Python import容易犯的一个错误

    有时,我们需要手动添加一些依赖 b.py import sys sys.path.insert(0,"haha")#引用haha目录下的a文件 当使用时 import a impo ...

最新文章

  1. 解决虚拟器device support x86 but apk only supports armeabi-v7
  2. 必知必会的微服务面试题
  3. java5年转c语言,时隔5年,C语言再次领先Java,荣登编程语言排行榜第一!
  4. PyTorch框架学习一——PyTorch的安装(CPU版本)
  5. 用户微信好友关系属于个人隐私吗?深圳南山法院说不属于...
  6. HI3520D 音频
  7. skiller3.31 发布
  8. Java-事务的传播特性和隔离级别
  9. xp系统远程桌面关闭计算机,系统是xp在本机开启远程桌面后,别人使用远程桌面连接我的电脑,我的电脑就会出现蓝屏停止代码是0x0000007f...
  10. 给移动硬盘安装PE系统
  11. 13,猜数字游戏,我有一个数,请您猜猜是多少?
  12. 电子工程师的职业规划
  13. windows10+ubuntu 16 04+双硬盘(SSD+HDD)分区(图文)
  14. 7-50 近似求PI (15分)
  15. SAP收购Sybase的真实意图或强化BI
  16. 2-5 K8s图形化管理界面dashboard
  17. BIM模型轻量化的方法总结
  18. 火车到站时间接口 站到站列车信息检索
  19. 区块链与实体产业相结合加速推进数字经济智能化发展
  20. 不会画动漫眼睛没关系,8个步骤100%学会

热门文章

  1. Linux 工程师技术 系统服务管理进阶
  2. 用python写网络爬虫 -从零开始 4 用正则表达式 编写链接爬虫
  3. node.js学习之react,redux,react-redux
  4. Java知多少(24)包装类、拆箱和装箱详解
  5. C#多线程|匿名委托传参数|测试您的网站能承受的压力|附源代码
  6. Instant Complexity--POJ 1472
  7. 气愤ing,身份证丢了到底要不要挂失?
  8. python 3.9 发布_Python 3.9.0 稳定版发布
  9. Linux安装MySQL8.0
  10. 001redis数据库的介绍