¿Por qué el siguiente código tiene una salida correcta? int GGT no tiene declaración de devolución, ¿pero el código funciona de todos modos? No hay variables globales establecidas.La función devuelve valor sin declaración de retorno
#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;
}
}
}
Gire el nivel de advertencia directamente en su compilador, y debería recibir un mensaje ... –
Recibo un mensaje de advertencia, pero estoy interesado por qué funciona, ¿el compilador establece un valor de retorno, si ¿no hay nadie? –
posible duplicado de [la función C definida como int pero sin declaración de devolución en el cuerpo todavía compila] (http://stackoverflow.com/questions/4260048/c-function-defined-as-int-but-having-no- return-statement-in-the-body-still-compi) –