这可能不优雅。主要是因为我对 C++ 比较陌生,但我正在编写的这个小程序在这里遇到了麻烦。
我不明白。我误解了数组吗?编辑后的代码是:
int diceArray [6][3][1] = {};
...
}else if (y >= xSuccess || x >= xSuccess){
// from here...
diceArray[2][1][0] = diceArray[2][1][0] + 1;
diceArray[2][1][1] = diceArray[2][1][1] + 1;
// ...to here, diceArray[2][2][0] increases by 1. I am not referencing that part of the array at all. Or am I?
}
通过使用注释,我将罪魁祸首追溯到第二个表达式。如果我注释掉第一个 diceArray[2][2][0]
不会改变。
为什么 diceArray[2][1][1] = diceArray[2][1][1] + 1
导致 diceArray[2][2][0]
递增?
我试过了..
c = diceArray[2][1][1] + 1;
diceArray[2][1][1] = c;
..作为解决方法,但它是一样的。它将 diceArray[2][2][0]
增加了一个。
最佳答案
您的索引超出范围。如果我声明这样一个数组
int data [3];
那么有效的索引是
data[0]
data[1]
data[2]
与此类似的是你声明
int diceArray [6][3][1]
^
然后尝试分配给
diceArray[2][1][0]
^
diceArray[2][1][1] // This is out of range
^
由于您正在分配超出范围,由于指针算法,您实际上是由于跨步等原因分配给下一个维度。
关于C++,为什么多维数组的一个元素的增加似乎在增加另一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41957631/