pakdoltogel.net
L'utilisation de la fonction pow() renvoie une erreur de référence indéfinie en C (4) référence indéfinie à `pow ' parce que le pouvoir à un nombre doit avoir une valeur entière en tant que puissance pow(x, y) where, x must be real and y must be a whole number Pourquoi le code suivant fonctionne-t-il dans C: int res = pow(2, 3); printf("%d\n", res); alors que cet autre ne le fait pas? int a = 2; int b = 3; int res = pow(a, b); Même si j'essaie double a = 2; double b = 3; double res = pow(a, b); printf("%f\n", res); Je reçois un référence indéfinie à `pow ' Qu'est-ce que je fais mal?
0f" le permet. Pour ma part, je trouve plus lisible la version avec le cast explicite. Et le résultat diffère selon les valeurs: 1 2 3 4 5 6 7 8 9 10 11 12 double f= 128. 49; printf ( "en%%f =%f \n ", f); printf ( "en%%. 0f =%. 0f \n ", f); printf ( "en%%d =%d \n ", ( int) f); printf ( " \n "); f= 128. 5; donne pour résultat (sur Windows, avec mingw, idem avec visual C++) 1 2 3 4 5 6 7 en%f = 128. 490000 en%. 0 f = 128 en%d = 128 en%f = 128. 500000 en%. 0 f = 129 donc, le printf d'un flottant avec%. 0f correspond à un arrondit, avec basule de l'entier renvoyé à partie décimale >=. 5 Comme toujours, il faut beaucoup de méfier des problèmes de conversion. Au moins, en faisant explicitement le cast, on sait où on va: plus proche valeur entière arrondie vers zéro (ce n'est pas la partie entière au sens mathématique). Compilation sans erreur ne signifie pas programme sans erreur. L' indentation n'a pas été imaginée pour faire beau, mais pour faciliter la lecture des programmes. 02/12/2006, 21h33 #8 La reponse a ete dejà donnée, pow renvoie un floattant donc tu dois utiliser printf comme ceci: printf("%f",... Fonction pow en commun. ); 03/12/2006, 10h02 #9 Ok merci mais c'est quoi un cast?
9 décembre 2005 à 18:50:40 Enfin c'était pas le sujet de départ puisque le principe c'était pas délever un nombre au carre mais n'importe quel nombre à n'importe quelle puissance et pas seulement les nombres paires. Pour info voila le code retapé: double nombre = 0, resultat = 0, puissance = 0; scanf ( "%lf", &nombre); scanf ( "%lf", &puissance); printf ( " \n%0. 3lf puissance 0. 3%lf est egale a%0. C - fonction de pow en C. 3lf \n ", nombre, puissance, resultat); 9 décembre 2005 à 18:52:21 pourquoi ne pas autoriser de mettre un flottant (un réel en gros) dans l'exposant? Si je veux calculer 4^0. 5 je peux pas? 9 décembre 2005 à 19:02:14 Citation: bluestorm pourquoi ne pas autoriser de mettre un flottant (un réel en gros) dans l'exposant? Oui, c'est stupide, c'est le poste précedent qui m'a perturber: Citation: simon-le-zeus 10 décembre 2005 à 10:10:30 Ben en fait je disais ça car dans ton code tu utilises un entier et pas un décimal donc int suffit à double non? 12 décembre 2005 à 15:13:40 Bon j ai reesaiye avec le code de arnaud et ca marche mais bon les petit "0, 3" ca me pompe et je ne comprend pas leur utilite...