Code Fix

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

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

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

 1  #include <iostream>
 2  int main() {
 3      int temps[5] = {18, 20, 19, 21, 17};
 4      int count = _;
                    ^
 5      int sum = 0;
 6      for (int i = 0; i < count; i++) {
 7          sum += temps[i];
 8      }
 9      std::cout << sum << std::endl;
10      return 0;
11  }
出力: 78期待: 95

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

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

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

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

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

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