Zweidimensionales array C

Hallo!

ich hab eine kleines Problem mit einem 4x4 Array! Ich wollte eine Matrix mit der Eigenschaft Koordinaten erstellen, wo in jedes Feld eine Temperatur eingetragen wird, also jedes Feld hat die Eigenschaft Temperatur. Nun gibt der Compiler drei falsche Werte aus.


Headerdatei mit dem Namen „gh.h“

#ifndef GH_H_
#define GH_H_

struct foo {
struct {
int temp;

} coord[3][3];
} field;

#endif /* GH_H_ */

main.c

#include
#include „gh.h“

int main() {

field.coord[0][0].temp = 1;
field.coord[1][0].temp = 2;
field.coord[2][0].temp = 3;
field.coord[3][0].temp = 4;

field.coord[0][1].temp = 5;
field.coord[1][1].temp = 6;
field.coord[2][1].temp = 7;
field.coord[3][1].temp = 8;

field.coord[0][2].temp = 9;
field.coord[1][2].temp = 10;
field.coord[2][2].temp = 11;
field.coord[3][2].temp = 12;

field.coord[0][3].temp = 13;
field.coord[1][3].temp = 14;
field.coord[2][3].temp = 15;
field.coord[3][3].temp = 16;

printf("%d %d %d %d\n", field.coord[0][0].temp, field.coord[0][1].temp, field.coord[0][2].temp, field.coord[0][3].temp);
printf("%d %d %d %d\n", field.coord[1][0].temp, field.coord[1][1].temp, field.coord[1][2].temp, field.coord[1][3].temp);
printf("%d %d %d %d\n", field.coord[2][0].temp, field.coord[2][1].temp, field.coord[2][2].temp, field.coord[2][3].temp);
printf("%d %d %d %d\n", field.coord[3][0].temp, field.coord[3][1].temp, field.coord[2][2].temp, field.coord[3][3].temp);

return 0;

}


Der Compiler gibt folgendes aus:

1 5 9 13
13 6 10 14
14 7 11 15
15 8 11 16

Die drei unteren Werte in der ersten Spalte sind falsch!

Was habe ich falsch gemacht?

Gruß Alex

> } coord[4][4];

sonst ist es kein 4x4 Array.

Gruss
E.

Ach, ich war blind! Danke!!!

Es müsste heißen
coord[4][4];
nicht
coord[3][3];
nur bei der Aufzählung beginnt man bei 0 zu zählen. Bei der Definition aber bei 1

Also mal von der Logik sehe ich nur einen Tippfehler in der letzten printf …[2][2] anstatt [3][2].

Das Ergebnis verwundert mich gerade auch sehr, habe es mit dem aktuellen gcc getestet und bei mir kommt das erwartete Ergebnis raus.

Eigentlich programmiere ich allerdings fast ausschließlich C# und habe C und C++ lange nicht mehr gemacht.

Jep, Danke war ein Tippfehler, der mir gar nicht aufgefallen ist…