初級 › 配列の添字を1つずらしてしまうoff-by-oneバグ › パターン5
配列の添字を1つずらしてしまうoff-by-oneバグ
配列の要素数と添字の範囲を混同し、ループの開始や終了条件を1つずらしてしまうバグです。
1 #include <iostream> 2 int main() { 3 int vals[3] = {100, 200, 300}; 4 int total = 0; 5 for (int i = 0; i < _; i++) { ^ 6 total += vals[i]; 7 } 8 std::cout << total << std::endl; 9 return 0; 10 }
出力: 300期待: 600
空欄を埋めてコンパイル・実行を通す
境界をi<2にすると最後の要素(300)が合計に含まれません。
次の問題