最后一个数组打印0 C ++

时间:2012-11-19 09:57:44

标签: c++ arrays kubuntu

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

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

然后我将数组与

一起使用
cout<<"First die: "<< die[0] <<"\n"

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

2 个答案:

答案 0 :(得分:6)

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

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

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

答案 1 :(得分:0)

在你的代码中你有这一行:

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

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

这实际上是“未定义的行为”。您的程序可能会核心转储/提供访问冲突,但它不必。它只需输出一些随机数或零......