初級 › 配列の添字を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
空欄を埋めてコンパイル・実行を通す
ループをi=1から始めると、添字0の要素(70)が合計に含まれません。配列の最初の要素は添字0であることを忘れると起きるミスです。
次の問題