Code Fix

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

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

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

 1  #include <iostream>
 2  int main() {
 3      int nums[4] = {5, 10, 15, 20};
 4      int sum = 0;
 5      for (int i = _; i < 4; i++) {
                     ^
 6          sum += nums[i];
 7      }
 8      std::cout << sum << std::endl;
 9      return 0;
10  }
出力: 45期待: 50

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

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

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

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

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

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