Die Funktion liefert den Wert ohne return-Anweisung

Warum funktioniert folgende code ist eine korrekte Ausgabe? int GGT hat keine return-Anweisung, aber der code funktioniert trotzdem? Es gibt keine globalen Variablen gesetzt.

#include <stdio.h>
#include <stdlib.h>

int GGT(int, int);

void main() {
    int x1, x2;
    printf("Bitte geben Sie zwei Zahlen ein: \n");
    scanf("%d", &x1);
    scanf("%d", &x2);
    printf("GGT ist: %d\n", GGT(x1, x2));
    system("Pause");
}

int GGT(int x1, int x2) {
    while(x1 != x2) {
        if(x1 > x2) {
            /*return*/ x1 = x1 - x2;
        }
        else {
            /*return*/ x2 = x2 - x1;
        }
    }
}
Schalten Sie die Warnung Ebene, bis auf den compiler, und Sie sollten eine Meldung erhalten...
Ich erhalte eine Warnmeldung, aber ich bin interessted, warum es funktioniert, weiß der compiler setzt einen return-Wert, wenn niemand da ist?
möglich, Duplikat der C-Funktion definiert als int aber ohne return-Anweisung im Körper noch kompiliert

InformationsquelleAutor Pascal Bayer | 2011-01-10

Schreibe einen Kommentar