La función C definida como int pero que no tiene una declaración de retorno en el cuerpo aún se compila
Digamos que tiene un código C como este:
#include <stdio.h>
int main(){
printf("Hello, world!\n");
printf("%d\n", f());
}
int f(){
}
Se compila bien con gcc, y la salida (en mi sistema) es:
¡Hola Mundo!
14
Pero ... pero ... ¿cómo es eso posible? Pensé que C no te permitirá compilar algo así porque f () no tiene una declaración return que devuelva un número entero. ¿Por qué está permitido eso? ¿Es una característica de C u omisión del compilador, y de dónde vino el 14?