Array Zugriff mit Komma: Arr[1,2]
-
Hallo an alle,
durch ein versehen habe ich auf ein Array
mit Komma in der eckigen Klammer zugegriffen:int Arr[3][4]; memset(Arr, 0, sizeof(Arr) ); Arr[0][0] = 100; int i1 = Arr[0][0]; // <-- i1 enthaelt 100 int* i2 = Arr[0,0]; // <-- Arr[0,0] ergibt einen pointer auf int ???Was passiert beim Zugriff Arr[0,0]

Wusste überhaupt nicht dass dies in C++ zulässig ist.
Gruß Ulli
-
Kommaoperator
int x = 1,3;
führt zu x == 3.
Der Kommaoperator wird von links nach rechts ausgewertet und gibt den Wert des letzten Ausdrucks zurück. Mit Arrays hat das also nichts zu tun.
Arr[0,0] ist damit das gleiche wie Arr[0], da es keine Nebeneffekte des ersten Teilausdrucks (die linke 0) gibt.
-
Hallo,
vielen Dank

Damit ist das Rätsel gelöstGruß Ulli
-
*edit*
Also bei mir ist das dann 1!
-
Fuchs aus dem Wald schrieb:
*edit*
Also bei mir ist das dann 1!
Operator precedence:
=vor,
-
Fuchs aus dem Wald schrieb:
Also bei mir ist das dann 1!
Das sollte gar nicht kompilieren.
-
hoppla, klammern vergessen:
int x = (1,3);
-
Arcoth schrieb:
Fuchs aus dem Wald schrieb:
*edit*
Also bei mir ist das dann 1!
Das sollte gar nicht kompilieren.

Caligulaminus' Erklaerung ist damit natuerlich falsch.
Ich bezog mich auf ein einfaches
a = 1, 3;
-
Caligulaminus schrieb:
Arcoth schrieb:
Fuchs aus dem Wald schrieb:
*edit*
Also bei mir ist das dann 1!
Das sollte gar nicht kompilieren.

Caligulaminus' Erklaerung ist damit natuerlich falsch.
Ich bezog mich auf ein einfaches
a = 1, 3;Achso, das erklaert's.

Jedoch wundert mich, das es fuer FudW kompiliert... VC++-Bug? Oder hat er auch was anderes kompiliert?