-1
我盯着這段代碼至少4個小時。爲什麼我的數組元素被覆蓋?
我不知道我在做什麼錯。
我正在用簡單的for循環更新數組hand[5][2]
。
存儲在hand[0][2]
,hand[0][3]
和hand[0][4]
中的值將不斷被覆蓋。
我用調試器慢慢地通過每一行,但我仍然不知道爲什麼我得到不同的值。
這是我得到
hand[0][0] = 0
hand[0][1] = 1
hand[0][2] = 2
hand[0][3] = 3
hand[0][4] = 4
hand[1][0] = 0
hand[1][1] = 1
hand[1][2] = 2
hand[1][3] = 3
hand[1][4] = 4
0 1 0 1 2 // WHY ARE hand[0][2],hand[0][3],hand[0][4] not the same????
0 1 2 3 4
代碼的輸出:
int main() {
//tests();
int hand[5][2];
int a[5], b[5];
char line[100];
int player = 0;
int card = 0;
for (int i = 0; i < 10; i++) {
hand[player][card] = card;
printf("hand[%d][%d] = %d\n", player, card, hand[player][card]);
card++;
if (card == 5) { player++; card = 0; }
}
// print first hand
for (int j = 0; j < 5; j++) {
printf("%d ", hand[0][j]);
}
printf("\n");
// print second hand
for (int j = 0; j < 5; j++) {
printf("%d ", hand[1][j]);
}
printf("\n");
return 0;
}
,而不是'如果(卡== 5){球員++; card = 0; }'你可以使用mod(%)運算符來獲得相同的效果(雖然在某些情況下會稍微慢一些):'hand [i/5] [i%5] = card;'(這不是答案因爲personjerry已在下面回答) –
C++風格:http://paste.ubuntu.com/13111470/或至少http://coliru.stacked-crooked.com/a/61588103c6184ee5 – sehe
我是一個IDIOTTTT – nevermind