Bug ou erreur ?

Résolu/Fermé
oli5667 Messages postés 139 Date d'inscription lundi 27 janvier 2014 Statut Membre Dernière intervention 23 novembre 2016 - Modifié par crapoulou le 1/02/2015 à 15:52
oli5667 Messages postés 139 Date d'inscription lundi 27 janvier 2014 Statut Membre Dernière intervention 23 novembre 2016 - 5 févr. 2015 à 03:26
Bonjour,

J'ai écrit mon code qui est très simple mais les 4 dernières lignes se mettent une après l'autres dans le codes quand je le construit... Pourriez vous m'aidez

#include <stdio.h>
#include <stdlib.h>

int main()
{
    puts ("Valeurs initiales : 8 et 2");
    puts ("---------------------------------");
    printf ("Addition : %d\n",        8+2);
    printf ("Soustraction :  %d\n",   8-2);
    printf ("Multiplication : %d\n",  8*2);
    printf ("Division : %d\n",        8/2);
    puts ("---------------------------------");
    puts ("---------------------------------");
    puts ("Valeurs initiales : 8,2 et 7");
    puts ("---------------------------------");
    printf ("Addition : %d\n",        8+2+7);
    printf ("Soustraction :  %d\n",   8-2-7);
    printf ("Multiplication : %d\n",  8*2*7);
    printf ("Division : %d\n",        8/2/7);
    puts ("---------------------------------");
    puts ("---------------------------------");
    puts ("Valeurs initiales : 4.2, 5.4 et 9.21");
    puts ("----------------------------------");
    printf ("Addition : %2.2f",           4.2+5.4+9.21);
    printf ("Soustraction : %2.2f",       4.2-5.4-9.21);
    printf ("Multiplication : %2.4f",     4.2*5.4*9.21);
    printf ("Division : %2.8f",           4.2/5.4/9.21);

    return 0;
}


Je vous rappelle que se sont seulement les 4 dernières lignes (J'utilise Code::Blocks)
Merci d'avance

3 réponses

sambia39 Messages postés 610 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 9 février 2023 49
Modifié par sambia39 le 1/02/2015 à 16:25
Bonjour
Tu as fait de petite erreur dans ton code (les quatre dernières lignes) tu à oublier de faire le retour chariot
 '\n' 
, mais ceci dit la division ne donne pas 0 mais bien 0.571429 avec un cast
 float 
( l'arrondit ) calculatrice = 0,57142857142
à bientôt
Celui qui peut, agit. Celui qui ne peut pas, enseigne. Il y a deux sortes de savants: les spécialistes, qui connaissent tout sur rien, et les philosophes, qui ne connaissent rien sur tout. G.B Shaw
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
2 févr. 2015 à 07:44
Juste pour info, il n'est pas question de float mais de double ici ;-).
0
sambia39 Messages postés 610 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 9 février 2023 49
2 févr. 2015 à 16:28
Bonjour
D'accord , mais dans le cas d'une simple division c'est souvent le
float
qui est utiliser.
Après rien n'empêche d'utiliser la double précision ou la précision étendue.
à bientôt
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835 > sambia39 Messages postés 610 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 9 février 2023
2 févr. 2015 à 18:28
Non c'est souvent le double qui est utilisé (1.5 est un double, sinon il faut mettre 1.5f) puis converti en float lorsque le type final est un float.
Ici on calcule un double et il est affiché tel quel (pas de conversion en float)
0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié par [Dal] le 3/02/2015 à 14:07
cela vient du standard du C, le C89 dit (3.1.3.1 Floating constants) :

An unsuffixed floating constant has type double. If suffixed by
the letter f or F, it has type float. If suffixed by the letter l
or L, it has type long double.


une constante à virgule est par défaut considérée comme un double.

c'est à distinguer du spécificateur %f de printf, qui a un autre objet, et qui, lui, permet d'afficher un nombre décimal à virgule, ce qui permet d'afficher un double comme un float.


Dal
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
3 févr. 2015 à 14:40
C'est ce que j'ai dit [Dal] ;-)
1.5 est un double, si on veut un float, on met 1.5f.
Pour le printf, c'est c'est que j'ai mis aussi...

D'ailleurs ce n'est pas propre au printf mais à toutes les fonctions à argument variable prenant en paramètre des floats.
0
oli5667 Messages postés 139 Date d'inscription lundi 27 janvier 2014 Statut Membre Dernière intervention 23 novembre 2016 2
2 févr. 2015 à 00:22
Merci beaucoup!!!
0
oli5667 Messages postés 139 Date d'inscription lundi 27 janvier 2014 Statut Membre Dernière intervention 23 novembre 2016 2
5 févr. 2015 à 03:26
Vous irez voir mon autre forum car j'ai vraiment besoin d'aide
Il se prénomme " fonction supplémentaire avec "switch"".
Merci d'avance
0