1. ホーム
  2. while-loop

[解決済み] オフバイエラーとは何ですか、またその修正方法は?

2022-03-04 14:12:22

質問

off-by-oneエラーとは何ですか?もしあれば、どのように修正すればよいですか?

解決方法は?

オフバイエラー というのは、例えば、ループをn回実行するつもりで、次のような書き方をした場合です。

for (int i = 1; i < n; ++i) { ... }

または

for (int i = 0; i <= n; ++i) { ... }

最初のケースでは、ループが実行されます (n - 1) 回、2回目の場合は (n + 1) 回となり、名前が1つずつずれていく。他のバリエーションも可能ですが、一般的にはループ変数の初期値やループの終了条件に誤りがあるため、ループの実行回数が1回多いか少ないかの違いとなります。

このループは、正しく次のように書くことができます。

for (int i = 0; i < n; ++i) { ... }

forループはwhileループの特殊なケースに過ぎません。whileループでも同じようなエラーが発生する可能性があります。