国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

off-by-one(大小差一)錯誤介紹

2019-11-14 09:42:26
字體:
供稿:網(wǎng)友

詳細(xì)了解請移步這里

off-by-one,大小差一錯誤是一類常見的程序設(shè)計(jì)錯誤。這方面有一個經(jīng)典的例子OpenSSH.去Google搜索關(guān)鍵詞“OpenSSH off-by-one”可以了解相關(guān)狀況。具體來說,

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

第二句應(yīng)該是正確的寫法。舉個更通俗的例子:

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

上述代碼定義了長度為5的數(shù)組a,循環(huán)的目的是給數(shù)組元素初始化,賦值為0.但是,循環(huán)下標(biāo)從1開始到5,出現(xiàn)了a[5]=0,這樣的不存在的數(shù)組元素.這就是典型的“差一錯誤”(off-by-one).其實(shí),貌似說柵欄柱錯誤(fencepost error)大家更熟悉。我問過身邊的朋友,很多人知道這個問題。如果你要建造一個100米長的柵欄,其柵欄柱間隔為10米,那么你需要多少根柵欄柱呢?11根或9根都是正確答案,這取決于是否要在柵欄的兩端樹立柵欄柱,但是10根卻是錯誤的。 我想起來了我高中是數(shù)學(xué)老師告訴我們的一個很容易犯錯的數(shù)學(xué)題目。從周一到周五一共有幾天?也許你立即反應(yīng)5-1=4,但是,下意識你也會說五天,實(shí)際上應(yīng)該是5-1+1=5.轉(zhuǎn)換到數(shù)學(xué),數(shù)字1到數(shù)字5一共有幾個數(shù)字?這里有一個公式 從M到N,一共有 M-N+1 項(xiàng).

這個問題寫出來后很簡單,只不過在寫代碼的時候,往往比較容易忽略。尤其在涉及到數(shù)組操作兩端界限的時候,如果不是從0開始計(jì)數(shù),就要稍微考慮一下咯。

轉(zhuǎn)載時請注明本文出處 本文鏈接地址:https://www.tomytime.com/archives/224


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 伊通| 金堂县| 韶关市| 东宁县| 潜山县| 阜平县| 上饶市| 宜兰县| 吴桥县| 西林县| 五华县| 临沭县| 无棣县| 武平县| 丹东市| 新宾| 那坡县| 拜泉县| 武威市| 平远县| 庄浪县| 布尔津县| 大竹县| 疏附县| 泗阳县| 古丈县| 萨嘎县| 和平区| 墨江| 东乡族自治县| 桂林市| 图片| 金坛市| 丽水市| 珲春市| 定兴县| 清河县| 绥中县| 上饶市| 平舆县| 内江市|