获得意想不到的价值

Getting Unexpected value

我正在玩数组,当我这样做时,我期待 IndexOutOfBound
然而,该程序仍然 运行 并给出了输出 54

多出的号码从何而来?
如何避免这类索引问题?

#include <iostream>
int main(){
    int array[] = {1,2,3,4,5,6};
    int total;
    for(int i = 0 ; i<=7 ; i++){
        total += array[i];      
    }
    std::cout << total;
    return 0;
}

C++ 不会进行任何检查以确保您的索引对于数组的长度有效。 就像上面的丘里尔笔记一样,超出范围的索引是未定义的行为。例如,在您的问题中, array[6] 的值是存储在第 6 个元素所在位置的内存。在你的例子中,这是一个随机值,例如来自另一个变量。

虽然很少见,但 C++ 也会让您使用负数索引,这会产生类似的不良结果。