【发布时间】:2015-06-03 21:23:52
【问题描述】:
根据我的阅读,数组只能是固定大小,这是在您创建它时定义的(如果您想创建具有动态大小的类似内容,则使用向量代替)。
但是,当我尝试在数组之外设置值时,我完全能够:
int badNums[5] = {4, 13, 14, 24, 34};
badNums[999] = -127;
std::cout << badNums[999] << std::endl;
// Returns -127
如果我尝试访问固定范围之外的数组值,它会变得更加奇怪:
std::cout << badNums[997] << std::endl;
// Returns 825245046 (but seems to be randomly chosen every time I run it)
这是怎么回事?
【问题讨论】:
-
这里发生了未定义的行为。不多也不少。
-
@TartanLlama 这个问题被关闭为“不是一个真正的问题”,实际上并没有解释发生了什么,或者为什么没有抛出错误。跨度>
-
@AnT “托托,我感觉我们不再使用 Java。”
-
根据我的阅读,当红灯时我无法过马路,但当我尝试它时,它成功了,我最终走到了街道的另一边。 -- 不能保证你会被阻止这样做,但下一次,你可能会被罚单或被车撞
-
@KeithThompson 我来自这样一个世界,每当你把脚伸到人行道外时,一个无所不知的声音就会从天空回荡:“坚持住,我的儿子;
ArrayIndexOutOfBoundsException”