Code Fix

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

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

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

 1  #include <iostream>
 2  int main() {
 3      int prices[4] = {10, 20, 30, 40};
 4      int total = 0;
 5      for (int i = 0; i < _; i++) {
                            ^
 6          total += prices[i];
 7      }
 8      std::cout << total << std::endl;
 9      return 0;
10  }
出力: 60期待: 100

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

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

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

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

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

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