【发布时间】:2020-11-12 06:25:02
【问题描述】:
我在玩数组,当我这样做时,我期待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;
}
【问题讨论】:
-
你为什么期待
IndexOutOfBound?你能指出一份文件提到这应该发生吗?越界写入(和读取)在 C++ 中是未定义的行为。让我搜索一些相关的问题。 -
total也未初始化。因此,即使您将 for 循环修复为仅访问:for (int i = 0; i < 6; i++),那么您仍然需要在循环运行之前初始化total = 0;。 -
@churill 我来自 python..尝试不同的语言来找到适合我的..在 python 上构建了几个项目之后..我正在考虑 C/C++ ......你可能知道,python中的索引将给出
list index out of range -
@prokillerinminecraft 因为这是未定义的行为,C++ 没有说明额外数字的来源。如果您想知道答案,则必须查看您的编译器和操作系统,这不是 C++ 问题。