Ваша функция, кажется, нуждается в возврате:

#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 типом возврата является char, но в toUpper () нет возврата. И скомпилируйте исходный код с помощью gcc (GCC) 4.5.1 20100924 (Red Hat 4.5.1-4), fedora-14.

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

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