samaie
Messages postés12Date d'inscriptionmercredi 9 janvier 2008StatutMembreDernière intervention31 janvier 2008
-
16 janv. 2008 à 18:28
cs_nosferaptus
Messages postés5Date d'inscriptionmardi 6 mars 2007StatutMembreDernière intervention 4 avril 2010
-
6 nov. 2008 à 17:33
float test(int i, int j)
{
return (float) i+j;
}
float test(float i, float j)
{
return i*j;
}
Je vous poste deux fonctions:
Dans le cas ou je ferai un appel telle que test(2.5,3) j'aimerai savoir laquelle des deux fonctions sera applée et aussi en savoir la raison??
Merci.
A voir également:
Ora-00937: la fonction de groupe ne porte pas sur un groupe simple
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 16 janv. 2008 à 19:37
Ben....
Logiquement parce que la première fonction ne prend que des int mais tu passes un float. Le compilo fera donc appel à la seconde fonction qui prend des floats.
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 16 janv. 2008 à 18:50
Soit plus rigoureux, tapes test(2.5f, 3.0f) et tu n'auras pas de doute.
Sinon pour ton pb, pourquoi ne le testes tu pas au lieu de poster sur un forum ?
Pour la réponse, j'imagine que le compilo va préférer promouvoir le type int en float plutot que de dégrader le floatant 2.5, donc la deuxième fonction sera probablement appelée.
samaie
Messages postés12Date d'inscriptionmercredi 9 janvier 2008StatutMembreDernière intervention31 janvier 2008 16 janv. 2008 à 18:56
Non ma question est justement dans le cas ou dans l'appel de fonction j'ai un float 2.5 et un int 3 ce qui fait
test(2.5f,3(int)) et donc pour savoir en faite pourquoi c'est la 2eme fonction qui va etre applée
je rappelle le code
float test(int i, int j)
cs_nosferaptus
Messages postés5Date d'inscriptionmardi 6 mars 2007StatutMembreDernière intervention 4 avril 2010 6 nov. 2008 à 17:33
Le compilateur différencie les deux fonctions par le nombre de paramètre dans ton cas la surcharge est identique dans le nombre, dans ce cas il passe au type de paramètre int pour la 1ere et float pour l'autre c'est comme ça qu'il fait la différence.
Lors de l'exécution c la 2eme qui va être exécutée ==> test(2.5,3.0)