1) déjà ta fonction sait qu'elle doit retourner un double donc pourquoi tu le caste encore ?
2) tu doit envoyer à la fonction un tableau et la taille (en entier) selon ta déclaration mais regarde toi tu l'envoie un double au lieu d'un int 3) le format pour le double c'est %f et non %d
- Edité par EL-jos 22 mars 2018 à 11:22:50
Ton présent détermine ton futur et la connaissance te placera au dessus de ta génération .
Remarque : c'est %lf le format des 'double' − on peut utiliser %f dans la fonction 'printf' car il fait une conversion, mais ça ne marchera pas avec 'scanf'.
Pourquoi ça compilait quand même ? Parce que la mission du compilateur, c'est de transformer le code source en langage machine. Une erreur de format ne l'empêche pas de réaliser cette tâche. Cette erreur n'est pas une erreur de compilation mais une erreur de programmation, qui ne concerne pas le compilateur.
De plus, il est faux de dire qu'une variable de type double contient plein de valeurs. Une variable, c'est (en gros) des 0 et des 1 dans une case en mémoire. À ce niveau, c'est juste des 0 et des 1. Mais parce qu'on a dit que son type est 'double', ces 0 et ces 1 seront décodés d'une certaine façon. La format %lf sert aussi à ce décodage. Mais on peut très bien utiliser le format %d : ce sera décodé autrement, comme s'il s'agissait d'un 'int' (mais ce serait une erreur de programmation puisque ce n'est pas un 'int').
Exemple : imaginons que toutes les variables fassent un octet. Que représente 01011011 ?
− Si on appelle le format %d, on le décode comme pour un 'int' signé : le 0 de gauche représente le signe négaitf (ou positif suivant la convention de codage), et les autres chiffres sont les puissances de 2 dans l'ordre décroissant, donc ça fait 1⋅2⁶ + 0⋅2⁵ + 1⋅2⁴ + 1⋅2³ + 0⋅2² + 1⋅2¹ + 1⋅2⁰. Le format %d va donc afficher le nombre -91.
− Si on appelle le format %f, et mettons que les 'float' soient sur 1 octet, ça va le décoder de façon complètement différente. Par exemple ça pourrait être ceci : les cinq premiers bits sont ceux de la mantisse, qui vaut donc -11 (le premier 0 servant de signe négatif),et les trois derniers sont deux de l'exposant, qui vaut donc -3 (le premier bit indiquant le signe, ici 0 = négatif). Le format %f va donc afficher le nombre -11×2^-3, c'està-dire -11×1/8, c'est-à-dire -1,735.
La variable contient une seule valeur (01011011), tout dépend comment on la décode. (C'est l'intérêt de lui assigner un type.)
Oui on est d accord quant je disai valeur de la variable, c est sa valeur en binaire dans l absolue :)
(ou plutot le contenu de l'adresse memoire de cette variable pour etre tres precis)
Merci bpc pour tes precisions
- Edité par Tristan DAN V2 23 mars 2018 à 19:01:10
Moyenne des doubles d'un tableau
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Ton présent détermine ton futur et la connaissance te placera au dessus de ta génération .