获得意想不到的价值
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++ 也会让您使用负数索引,这会产生类似的不良结果。
我正在玩数组,当我这样做时,我期待 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++ 也会让您使用负数索引,这会产生类似的不良结果。