中級 › 多次元配列で行と列の添字を取り違えて違う値を読む › パターン3
多次元配列で行と列の添字を取り違えて違う値を読む
arr[row][col]とarr[col][row]は多くの場合どちらもコンパイルは通り実行もできますが、正方でない配列では違う位置の値を読んでしまいます。
1 #include <stdio.h> 2 3 int main(void) { 4 int m[3][3] = {{2, 4, 6}, {8, 10, 12}, {14, 16, 18}}; 5 int row = 2, col = 1; 6 printf("%d\n", m[________]); ^ 7 return 0; 8 }
出力: 12期待: 16
空欄を埋めてコンパイル・実行を通す
添字を取り違えても実行時エラーにはならず、たまたま範囲内の別の値が読めてしまうため発見が遅れます。
次の問題