C: digite conversão ao passar um argumento em uma chamada de função

Da segunda edição da linguagem de programação C:

Como um argumento de uma chamada de função é uma expressão, as conversões de tipo também ocorrem quando os argumentos são passados ​​para a função. Na ausência de um protótipo de função, char e short tornam-se int e float torna-se duplo.

Ao ler o texto, fico com uma impressão de que, a menos que você especifique explicitamente o tipo de argumento usando o protótipo de conversão ou de função, os argumentos da função sempre serão passados ​​como transmitidos como int ou double.

Para verificar minha suposição, eu compilei o seguinte código:

#include <stdio.h>

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

void function_call(char c, float f)
{
}

Após a compilação, recebo os seguintes avisos:

typeconversion.c: 11: aviso: tipos conflitantes para "function_call"

typeconversion.c: 7: aviso: a declaração implícita anterior de "function_call" estava aqui

Meu palpite é que c e number foram convertidos para int e double na chamada de função, e foram convertidos de volta para char e float. Isso é o que realmente aconteceu?

questionAnswers(4)

yourAnswerToTheQuestion