初級 › 配列の添字を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
空欄を埋めてコンパイル・実行を通す
countを要素数5より1少ない4にすると、最後の要素(17)が合計から抜け落ちます。要素数を数える変数は実際の要素数と一致させる必要があります。
次の問題