Code Fix

初級配列の添字を1つずらしてしまうoff-by-oneバグ › パターン1

配列の添字を1つずらしてしまうoff-by-oneバグ

配列の要素数と添字の範囲を混同し、ループの開始や終了条件を1つずらしてしまうバグです。

 1  #include <iostream>
 2  int main() {
 3      int scores[3] = {70, 80, 90};
 4      int sum = 0;
 5      for (int i = _; i < 3; i++) {
                     ^
 6          sum += scores[i];
 7      }
 8      std::cout << sum << std::endl;
 9      return 0;
10  }
出力: 170期待: 240

空欄を埋めてコンパイル・実行を通す

広告
広告スロット(未設定)

配列の添字を1つずらしてしまうoff-by-oneバグ

要素が抜けたり、逆に範囲外を読んでしまったりします。

このエラーの解説と類題をまとめて見る →

広告
広告スロット(未設定)