C: conversion de type lors du passage d'un argument sur un appel de fonction

À partir Du Langage de Programmation C 2e Édition:

Depuis un argument d'un appel de fonction est une expression, les conversions de type également avoir lieu lorsque les arguments sont passés à la fonction. En l'absence d'un prototype de fonction, char et short devenir int et float devient double.

En lisant le texte, j'obtiens une impression qu'à moins de spécifier explicitement le type d'argument en utilisant la technique de fonte ou d'un prototype de fonction, les arguments de la fonction est toujours passé comme passé comme int ou double.

Afin de vérifier mon hypothèse, j'ai compilé le code suivant:

#include <stdio.h>

main()
{
     unsigned char c = 'Z';
     float number = 3.14f;
     function_call(c, number);
}

void function_call(char c, float f)
{
}

Après la compilation j'obtiens les avertissements suivants:

typeconversion.c:11: avertissement: conflicting types for ‘function_call’

typeconversion.c:7: avertissement: précédente déclaration implicite de " function_call’ était ici

Je suppose que c et le nombre ont été à la fois converti en int et double sur l'appel de la fonction, et ont ensuite été convertis en arrière à l'omble chevalier et de flotter. Est-ce ce qui s'est réellement passé?

source d'informationauteur Midnight Blue