0

我正在用 C++ 制作一个骰子游戏,在我的程序中我有一些数组。

die[5] = { (rand()%6)+1, (rand()%6)+1, (rand()%6)+1, (rand()%6)+1, (rand()%6)+1 };

然后我使用数组

cout<<"First die: "<< die[0] <<"\n"

ETC

但是,当我运行程序时,最后一个数组总是会打印 0,有没有办法解决这个问题?

4

2 回答 2

6

您并没有真正提供太多信息,但这是我的猜测:

  • 你走得太远了。数组中的最后一个位置是 die[4],您可能正在使用 die[5],这意味着您正在访问您不应该访问的内存。在某些系统上,这将自动初始化为“0”。

大小为 N 的数组总是包含从 0 到 N-1 的 N 个元素。使用 array[N] 访问超出数组范围的内存。这可能是未使用的内存(最佳情况)或分配给其他东西的内存。结果是麻烦。不要这样做。

于 2012-11-19T10:04:15.323 回答
0

在您的代码中,您有这一行:

54.  cout<<"Sixth die: " << die[5] <<"\n";

这是无效的访问,因为 die 只有 5 个元素,因此 0 到 4 是有效索引。

这实际上是“未定义的行为”。您的程序可能会进行核心转储/访问冲突,但并非必须如此。相反,它可以只输出一些随机数或零......

于 2012-11-19T10:06:42.213 回答