Regardez le programme suivant.Que se passe-t-il lorsque nous ne spécifions pas le type de données d'arguments dans une fonction et que nous lui transmettons des paramètres en l'appelant?
int main()
{
char a=65, ch ='c';
printit(a,ch);
}
printit(a,ch)
{
printf("a=%d ch=%c",a,ch);
}
Même si le type de données des arguments ne précise pas la fonction 'printit(), le résultat est représenté sur printf. Je vois la réponse correcte quand je le compile avec gcc et l'exécute. Pourquoi? N'est-il pas nécessaire de spécifier le type de données des arguments dans C? Quel est le type de données par défaut utilisé dans le cas indiqué ci-dessus?
Il semblerait que cela puisse également cesser de fonctionner dans les versions plus récentes de C. La norme 2005 C99 + TC1 + TC2 mentionne dans le renvoi que l'une des modifications par rapport aux versions précédentes consistait à "Supprimer la déclaration de fonction implicite". –