繁体   English   中英

最后数组打印0 C ++

[英]Last array printing 0 C++

我正在用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,有什么办法可以解决此问题?

您实际上并未提供太多信息,但这是我的猜测:

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM