【发布时间】:2013-05-01 22:46:41
【问题描述】:
这是 c++ 中的 for 循环。我不明白为什么它在执行时没有给出分段错误。
int main()
{
int arr[5];
for (int x = 0; x <= 5; x++)
{
arr[x] = x;
}
return 0;
}
【问题讨论】:
-
这来自使用 Java、Javascript 和 C# 编码的人...为什么会导致错误?
-
for (int x = 0; x < 5; ++x)。从零开始。 -
@Renan 该数组有 5 个元素,索引为 0 到 4。正在访问索引 5。
-
@sftrabbit 谢谢。我希望在 C++ 中,这只会导致程序尝试读取内存中接下来的 4 个(或在某些机器中为 2 个或 8 个)字节,紧挨着分配给第 5 个位置的那些字节。但话说回来,C++ 不是我的强项。
-
@Renan 是的,可能。这就是为什么它是未定义的行为。
标签: c++