Посмотрите на следующую программу.Что происходит, когда мы не указываем тип данных аргументов в функции и передаем ему параметры при вызове?
int main()
{
char a=65, ch ='c';
printit(a,ch);
}
printit(a,ch)
{
printf("a=%d ch=%c",a,ch);
}
Даже если тип данных аргументов не задано в функции «printit()», результат показан на Printf. Я вижу правильный ответ, когда компилирую его с помощью gcc и запускаю его. Почему? Нет необходимости указывать тип данных аргументов в C? Каков тип данных по умолчанию для аргумента, принятого в случае, показанном выше?
Похоже, что это может перестать работать и в более новых версиях C. В стандарте 2005 C99 + TC1 + TC2 упоминается вперед, что одним из изменений предыдущих версий было «Удалить объявление неявной функции [s]». –