Bug ou erreur ?

Résolu
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

  1. 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
    1. Contributeur
      Juste pour info, il n'est pas question de float mais de double ici ;-).
    2. 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
    3. Contributeur
      @sambia39Non 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)
    4. Contributeur
      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
    5. Contributeur
      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.
  2. 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