详细了解请移步这里 off-by-one,大小差一错误是一类常见的程序设计错误。这方面有一个经典的例子OpenSSH.去Google搜索关键词“OpenSSH off-by-one”可以了解相关状况。具体来说,

1. if(id < 0 || id > channels_alloc)...
2. if(id < 0 || id >= channels_alloc)...

第二句应该是正确的写法。举个更通俗的例子:

int a[5],i;
for(i = 1;i < = 5;i++)a[i]=0;

上述代码定义了长度为5的数组a,循环的目的是给数组元素初始化,赋值为0.但是,循环下标从1开始到5,出现了a[5]=0,这样的不存在的数组元素.这就是典型的“差一错误”(off-by-one).其实,貌似说栅栏柱错误(fencepost error)大家更熟悉。我问过身边的朋友,很多人知道这个问题。 如果你要建造一个100米长的栅栏,其栅栏柱间隔为10米,那么你需要多少根栅栏柱呢?11根或9根都是正确答案,这取决于是否要在栅栏的两端树立栅栏柱,但是10根却是错误的。 我想起来了我高中是数学老师告诉我们的一个很容易犯错的数学题目。从周一到周五一共有几天?也许你立即反应5-1=4,但是,下意识你也会说五天,实际上应该是5-1+1=5.转换到数学,数字1到数字5一共有几个数字?这里有一个公式 从M到N,一共有 M-N+1 项.这个问题写出来后很简单,只不过在写代码的时候,往往比较容易忽略。尤其在涉及到数组操作两端界限的时候,如果不是从0开始计数,就要稍微考虑一下咯。

本文链接地址:http://www.tomytime.com/archives/224/

off-by-one(大小差一)错误介绍相关推荐

  1. TensorFlow 、Caffe等9大人工智能框架对比介绍

    TensorFlow .Caffe等9大人工智能框架对比介绍. Tensor Flow https://www.tensorflow.org Tensor Flow来自谷歌家族,是一个强大的开源框架, ...

  2. 避免最常见的 10 大 JNI 编程错误的技巧和工具

    避免最常见的 10 大 JNI 编程错误的技巧和工具 Java™ 本机接口(Java Native Interface,JNI)是一个标准的 Java API,它支持将 Java 代码与使用其他编程语 ...

  3. C++各大有名库的介绍之C++标准库

    C++各大有名库的介绍之C++标准库 标准库中提供了C++程序的基本设施.虽然C++标准库随着C++标准折腾了许多年,直到标准的出台才正式定型,但是在标准库的实现上却很令人欣慰得看到多种实现,并且已被 ...

  4. git clone大文件EOF错误

    git clone大文件EOF错误 我们常用的git clone https://XXX 下载大文件时,加上墙的问题.会出现中断,例如gitlab git clone https://gitlab.c ...

  5. 大数据常见错误及解决方案

    大数据常见错误及解决方案(转载) 1.用./bin/spark-shell启动spark时遇到异常:java.net.BindException: Can't assign requested add ...

  6. 大数据培训课程内容介绍

    大数据是热门高薪岗位,初入职场的岗位薪酬在10k以上,毕业2-3年之后翻番属常态,高薪又高社会地位也难怪许多0基础的人也想要尝试着发展.如何才能完成0基础到优秀大数据分析师的蜕变?找专业机构报班学习是 ...

  7. C++各大有名库的介绍(一)

    C++各大有名库的介绍之C++标准库 标准库中提供了C++程序的基本设施.虽然C++标准库随着C++标准折腾了许多年,直到标准的出台才正式定型,但是在标准库的实现上却很令人欣慰得看到多种实现,并且已被 ...

  8. 各大有名库的介绍(转)

    各大有名库的介绍 转载自: www.csdn.net 在C++中,库的地位是非常高的.C++之父 Bjarne Stroustrup先生多次表示了设计库来扩充功能要好过 设计更多的语法的言论.现实中, ...

  9. 大数据_01【介绍】

    大数据_01[介绍] 01 什么是大数据 02 大数据特点 03 大数据能做什么[海量数据背景下] 04 大数据行业的应用 05 大数据发展前景 06 大数据部门组织结构 07 大数据项目流程 01 ...

  10. HTML5期末大作业:个人介绍/个人主页/网页设计——个人博客 (11页) HTML+CSS+JavaScript

    HTML5期末大作业:个人介绍/个人主页/网页设计--个人博客 (11页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码 常见 ...

最新文章

  1. 改改 Python 代码,运行速度还能提升 6 万倍,Science:先别想摩尔定律了
  2. 用户名 不在 sudoers文件中,此事将被报告
  3. Dataset之WebVision:WebVision数据集简介、下载、使用方法之详细攻略
  4. C语言合并链表merge linked list(附完整源码)
  5. Win10无管理员帐户,如何把自己提权为管理员
  6. relativelayout常用属性
  7. 提高编程技巧的十大方法
  8. Pr 视频效果:过渡、透视、通道
  9. DUILIB相对位置修改为锚概念
  10. 2006德国世界杯完全赛程表
  11. 简明扼要阐述synchronized和lock的区别
  12. 有特色的出版社图书封面
  13. 数据分析实战之超市零售分析(附python代码)
  14. 2.4G与5GWiFi频段的区别
  15. 02.python求和
  16. 水安ABC考试单选练习题库(1)
  17. java手动注册filter,SpringBoot注册Filter的两种实现方式
  18. 阿翔编程学-Axis传递Pojo对象
  19. python绘图库turtle_Python库-----Turtle绘图库
  20. 146_路由器项目_附加功能:可以拿取文件内IP保存到过滤链表中,过滤IP也可以保存到txt文件,也可以终端输入IP,保存到文件【单链表的尾插、头插、删除指定节点、遍历等】】

热门文章

  1. 去掉U盘写保护 修复u盘错误
  2. iPhone开发阶段性总结
  3. 记一次zip压缩包打开异常问题
  4. c语言标准差公式标准差数组,Excel标准差计算函数Stdev和StdevP的用法与区别,包含4个实例...
  5. C++中的LPVOID数据类型
  6. 前端实现街道地图_webgis前端地图功能展示
  7. speedoffice(PPT)怎么将背景设置为渐变的背景
  8. AB32VG1开发板学习(2)GPIO,多线程点灯
  9. 性能测试20--Analysis -- 内存与硬盘
  10. gvim【一】【安装和基本使用】