大小差一。。

就是指某个变量的最大值和最小值可能会和正常值差1,或者循环多执行一次/少执行一次。

一般在临界情况时发生。

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开始计数,就要稍微考虑一下咯。

off-by-one error相关推荐

  1. 解决gitte提交报错 error: GE007: Your push would publish a private email address.

    错误情况: gitte提交报错,无法提交上去,报错如下: remote: Powered by GITEE.COM [GNK-6.0] remote: error: GE007: Your push ...

  2. 使用JPA进行update操作时,报org.springframework.beans.factory.BeanCreationException: Error creating bean with

    使用JPA进行update操作时,报org.springframework.beans.factory.BeanCreationException: Error creating bean with ...

  3. Workbench Could not connect the SSH Tunnel Authentication error

    1. 问题现象 平日正常使用的 Workbench 在重启电脑之后发现无法连接到对应的数据库,workbench log显示 SSH tunnel]: Authentication error ope ...

  4. python2 安装faiss-gpu 报错 faiss/faiss/python/swigfaiss.i:241: Error: Unable to find ‘faiss/impl/platfo

    1. 安装报错 $ sudo pip install faiss-gpu --default-timeout=1000 -i https://pypi.douban.com/simple DEPREC ...

  5. GCC 链接 xxx:No such file or directory 及运行可执行文件 error while loading shared libraries: xxx.so 解决方案

    关于 GCC 提示找不到指定库文件的这个问题,通常出现在以下 2 个场景中: 利用静态库或者动态库文件实现链接操作(生成可执行文件)时,·GCC 可能会提示 xxx:No such file or d ...

  6. Go 学习笔记(64)— Go error.New 创建接口错误对象、fmt.Errorf 创建接口错误对象、errors.Is 和 errors.As

    1. error 接口定义 除用 panic 引发中断性错误外,还可返回 error 类型错误对象来表示函数调用状态.error 接口是 Go 原生内置的类型,它的定义如下: // $GOROOT/s ...

  7. fatal error all goroutines are asleep - deadlock!

    先看下面代码 package mainimport ("fmt""time" )func main() {ch1 := make(chan int)go fun ...

  8. pip install nmslib 失败 (error: command ‘x86_64-linux-gnu-gcc‘ failed with exit status 1)

    1. 问题现象 使用 pip 安装 nmslib 命令时出现如下错误: sudo pip install nmslib ....ERROR: Complete output from command ...

  9. 解决 win10 pycurl安装出错 Command python setup.py egg_info failed with error code 10 编译安装包 安装万金油...

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/yexiaohhjk/article/d ...

  10. Conversion error:Jekyll::Converters::Scss encountered an error while converting css/main.scss

    错误描述:Conversion error: Jekyll::Converters::Scss encountered an error while converting 'css/main.scss ...

最新文章

  1. 国内外最好用的9大工作任务管理软件
  2. Windows Server 2008 without Hyper-V 版本
  3. 对语句 cv::Point2f srcPoint[3];的理解~
  4. Eclipse Class Decompiler---Java反编译插件
  5. 倒数日电脑版_应用日报|iOS 或更名为 iPhoneOS,倒数日 Mac 版上线限时免费
  6. 子组件上下结构布局自适应父组件宽度高度
  7. python保存csv_在python中修改和保存csv文件
  8. php ajax练习
  9. (五)将YOLOv5 PyTorch模型权重转换为TensorFlow Lite格式
  10. java程序猿总结出来的经验
  11. 6月3号=》66页-70页
  12. oldboy第十三天学习
  13. 许三多身上的职业精神
  14. 什么是关键字驱动框架?
  15. hotmail 获取邮箱授权码
  16. 业务数据分析最佳案例!旅游业数据分析!⛵
  17. 显卡维修之显存位置如何确认
  18. 【Hive】快速入门~
  19. FireFox火狐浏览器设置不加载图片
  20. 【MATLAB教程案例3】QPSK解调过程的MATLAB开发

热门文章

  1. 二项分布的极大似然估计
  2. linux 循环while,linux命令:while循环
  3. 内存CL-RCD-RP-RAS含义
  4. 电脑解锁后黑屏有鼠标_电脑开机后黑屏只有一个鼠标箭头怎么办_win10屏幕黑屏就剩鼠标如何修复...
  5. PS 画笔工具与文字工具
  6. 用计算机清点木材的数量,木材检验员培训课件-木材出入库管理.ppt
  7. numpy npy,npz,csv文件存取
  8. python判断一个数是否是素数
  9. 十进制度分秒lisp函数_十进制经纬度与度分秒格式相互转换 Excel
  10. 解决 Permission denied: user=root, access=WRITE, inode=“/user“:hdfs:supergroup:drwxr-xr-x