Matti Maekitalo: Kleines C-Rätsel

Beitrag lesen

use Mosche;

=== cut ===
#include <stdio.h>

int main() {
    short a[10];
    int b = 5;

a[b] = 42;
    printf("%d \n", b[a]);

return 0;
}
=== cut ===

Kommentare? Meinungen? ;)

Hmm - ich bin kein grosser C-Programmierer (lerne nur ein bißchen an C++ herum), aber schon das reicht mir, um zu sehen, das dieses Codeprogramm _eigentlich_ nicht laufen sollte. Umso erstaunlicher, dass der gcc es selbst mit -Wall ohne Fehlermeldung kompiliert und auch noch das "richtige" *falsche* Ergebnis bei raus kommt.

Da ich mich mit C Internas kaum auskenne, tippe ich mal darauf, dass der gcc (vielleicht noch andere Compiler) b[a] bei nicht vorhandensein von dem Array b automatisch auf a[b] *zeigt*. Aber wie gesagt, ich kenne mich hier kaum aus, bin auf die Lösung gespannt.

Ist das Compiler-Verhalten hier ein Fehler?

use Tschoe qw(Matti);