Функция C, определенная как int, но не имеющая оператора return в теле, по-прежнему компилируется

Допустим, у вас есть такой код на C:

#include <stdio.h>

int main(){
    printf("Hello, world!\n");
    printf("%d\n", f());    
}

int f(){

}

Он отлично компилируется с gcc, а вывод (в моей системе ) это:

Привет, мир!

14

Но ... но ... как это возможно? Я думал, что C не позволит вам компилировать что-то подобное, потому что f () не имеет Оператор return возвращает целое число. Почему это разрешено? Это функция C или упущение компилятора, и откуда появилось 14?

16
задан b4hand 15 November 2014 в 06:24
поделиться