追記:
xに横方向、yに縦方向と言う意味付けをしているのは人間であり、コンパイラはそんなことは頓着しない。
そもそも、Cの配列の配列は所謂二次元配列とは趣が異なるからa[x][y]かa[y][x]かは用途によってまちまちだったりする。
その上、実際によくある応用だと、二次元空間を仮想的に位置次元空間で表わす方法を取ることが多い。
その場合は、こんなコードになるかもしれない。
int main()
{
int a[] = {10, 20, 30, 40, 50, 60};
for (int y = 0; y < 2; ++y) {
for (int x = 0; x < 3; ++x) {
printf("a[%d][%d] = %d", y, x, a[y * 3 + x]);
if (x < 3 - 1) putchar(',');
}
putchar('\n');
}
return 0;
}