この問題の代表的な原因として、プログラマーが数字のカウントを0からではなく1から開始してしまう（多くのプログラミング言語では配列の添え字は0から始まる）、数値の比較において「～未満」とすべきところを「～以下」としてしまう、等が挙げられる。
比如，程序员在循环中进行比较的时候，本该使用“小于等于”，但却使用了“小于”，或者是程序员没有考虑到一个序列是从0而不是1开始（许多程序语言的数组下标都是这样）。