Почему и как GCC компилирует функцию с недостающим оператором возврата?

#include <stdio.h>

char toUpper(char);

int main(void)
{
    char ch, ch2;
    printf("lowercase input : ");
    ch = getchar();
    ch2 = toUpper(ch);
    printf("%c ==> %c\n", ch, ch2);

    return 0;
}

char toUpper(char c)
{
    if(c>='a'&&c<='z')
        c = c - 32;
}

В функции toUpper, возвратитесь, тип является символом, но нет никакого "возврата" в toUpper (). И скомпилируйте исходный код с gcc (GCC) 4.5.1 20100924 (Red Hat 4.5.1-4), мягкая фетровая шляпа 14.

, Конечно, предупреждение выдано: "предупреждение: управление достигает конца непустой функции", но, работая хорошо.

, Что произошло в том коде во время компиляции с gcc? Я хочу получить основательный ответ в этом случае. Спасибо :)

9
задан stakx supports GoFundMonica 2 September 2011 в 09:02
поделиться