正如標題所說,我的代碼讀取二維陣列完全錯誤。
const int WINNING_ROWS[8][3] = { (0, 1, 2),
(3, 4, 5),
(6, 7, 8),
(0, 3, 6),
(1, 4, 7),
(2, 5, 8),
(0, 4, 8),
(2, 4, 6) };
上面是我的二維數字陣列。我的程式似乎無法正確讀取它。
例如,如果我要求第 2 行,第 1 項,我希望得到 7,但是,它給了我 6。這是我嘗試找出問題所在的行和專案請求串列這里。
- 第 0 行,第 0 項,預期結果 0,實際結果 2
- 第 3 行,第 2 項,預期結果 6,實際結果 0
- 第 1 行,第 0 項,預期結果 3,實際結果 6
- 第 5 行,第 1 項,預期結果 5,實際結果 0
- 第 8 行,第 2 項,預期結果 6,實際結果 13629648
- 第 7 行,第 2 項,預期結果 6,實際結果 0
作為參考,這是我一直用來從陣列中呼叫專案的代碼
cout << WINNING_ROWS[7][2] << endl;
編輯 1:忽略粗體專案,這是我測驗代碼時的錯誤。
編輯 2:我的問題已得到解答。
uj5u.com熱心網友回復:
const int WINNING_ROWS[8][3] = { (0, 1, 2),
(3, 4, 5),
(6, 7, 8),
(0, 3, 6),
(1, 4, 7),
(2, 5, 8),
(0, 4, 8),
(2, 4, 6) };
這并不意味著你認為它的作用。的(0,1,2)是不三個元素的行,但是使用逗號操作一個整數來計算。 0,1,2評估為2.
您需要使用正確的{...}大括號而不是括號,或者完全不使用它們。
建議你也更改const到constexpr。
uj5u.com熱心網友回復:
WINNING_ROWS[8][2]超出陣列邊界,這意味著它將導致未定義的行為。如果你想得到最后一個元素,你應該嘗試,cout << WINNING_ROWS[7][2] << endl;因為它們是 0-indexed。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/331738.html
