逆序枚举时常犯的一个错误
一 写在开头
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
逆序枚举时常犯的一个错误相关推荐
- 我犯了一个错误,您能指出吗?
这是我最近在项目中犯的一个错误,您能指出吗? 这个项目在数据访问方面使用了传统的Repository模式.为此,我定义了一个Repository基类,可以让每个不同的Repository继承它: pu ...
- 农民约翰是一个惊人的会计_我的朋友约翰在CSS Grid中犯了一个错误。 不要像约翰-这样做。
农民约翰是一个惊人的会计 It had been two years and John had no job. 已经两年了,约翰没有工作. John was a smart 20-something ...
- java 链表逆序代码_如何实现一个高效的单向链表逆序输出?(详解)
需要考虑因素,高效应权衡多方面因素 数据量是否会很大 空间是否有限制 原始链表的结构是否可以更改 时间复杂度是否有限制 一个链表节点需要输出的元素有多个,例如链表中存的是自定义对象,有多个字段 题目. ...
- js参数使用时常犯的一个低级错误
这个小小的细节浪费了我20分钟. 为了避免今后重蹈覆辙.截图记录下来~! 转载于:https://www.cnblogs.com/missthe/archive/2008/11/28/1342933. ...
- 我犯了一个错误,您能指出吗?(结论)
其实许多朋友已经在回复中发现问题所在了,其中最早指出错误的是狼Robot同学,他说: 每个T都会使用一个新的连接. 泛型类中的静态变量会因为T的不同而产生不同的值,也就是说每个T所访问的静态变量都是独 ...
- python怎么将字符串逆序_python中如何把一个字符串顺序逆序反转的几种方法?
如 a='123456789' 反转成 a='987654321' 第一种方法:使用字符串切片 >>> a='123456789' >>> a = a[::-1] ...
- 0-1背包 一维数组为什么逆序枚举
https://blog.csdn.net/aidway/article/details/50726472
- 今天犯的一个错误,导致method GET must not have a request body
事件经过: 1.在本地机器运行完全正常的程序,手动人工发包到测试环境上,后台日志频频报method GET must not have a request body. 2.使用postman发送pos ...
- Python import容易犯的一个错误
有时,我们需要手动添加一些依赖 b.py import sys sys.path.insert(0,"haha")#引用haha目录下的a文件 当使用时 import a impo ...
最新文章
- 解决虚拟器device support x86 but apk only supports armeabi-v7
- 必知必会的微服务面试题
- java5年转c语言,时隔5年,C语言再次领先Java,荣登编程语言排行榜第一!
- PyTorch框架学习一——PyTorch的安装(CPU版本)
- 用户微信好友关系属于个人隐私吗?深圳南山法院说不属于...
- HI3520D 音频
- skiller3.31 发布
- Java-事务的传播特性和隔离级别
- xp系统远程桌面关闭计算机,系统是xp在本机开启远程桌面后,别人使用远程桌面连接我的电脑,我的电脑就会出现蓝屏停止代码是0x0000007f...
- 给移动硬盘安装PE系统
- 13,猜数字游戏,我有一个数,请您猜猜是多少?
- 电子工程师的职业规划
- windows10+ubuntu 16 04+双硬盘(SSD+HDD)分区(图文)
- 7-50 近似求PI (15分)
- SAP收购Sybase的真实意图或强化BI
- 2-5 K8s图形化管理界面dashboard
- BIM模型轻量化的方法总结
- 火车到站时间接口 站到站列车信息检索
- 区块链与实体产业相结合加速推进数字经济智能化发展
- 不会画动漫眼睛没关系,8个步骤100%学会
热门文章
- Linux 工程师技术 系统服务管理进阶
- 用python写网络爬虫 -从零开始 4 用正则表达式 编写链接爬虫
- node.js学习之react,redux,react-redux
- Java知多少(24)包装类、拆箱和装箱详解
- C#多线程|匿名委托传参数|测试您的网站能承受的压力|附源代码
- Instant Complexity--POJ 1472
- 气愤ing,身份证丢了到底要不要挂失?
- python 3.9 发布_Python 3.9.0 稳定版发布
- Linux安装MySQL8.0
- 001redis数据库的介绍