1

私はコードを書いていて、配列のサイズと同じかそれ以上のインデックスにある配列の要素に「アクセス」できることに気付きました。これでエラーが発生しないのはなぜですか?

例えば、

#include <iostream>
using namespace std;

int main ()
{
    int b_array[5] = {1, 2, 3, 4, 5};


    cout << b_array[5]  << endl  // Returns 0
         << b_array[66] << endl; // Returns some apparently random value.

    return 0;
}
4

4 に答える 4

5

C++ は、パフォーマンスが低下するため、境界チェックを実装していません。
たとえば、vectorテンプレートには境界をチェックする関数が含まれていますが、演算子at()よりも約 5 倍遅くなります。 低水準言語は、高いパフォーマンスと引き換えに、安全でエラーのないコードを生成することをプログラマーに強いる傾向があります。[]

于 2013-11-02T20:00:18.577 に答える