Partage
  • Partager sur Facebook
  • Partager sur Twitter

aff faux de var long double avec code block 17.12

Sujet résolu
    22 juin 2019 à 13:21:24

    bonjour,

    la ligne suivante me donne n'importe quoi comme résultat.

    j'essayé Lg llg LLg rien n'y change

    code:

    #include <stdio.h>
    #include <stdlib.h>
    
    
    int main(void)
    {
        char z = 'z';
        char a = 10;
        unsigned short b = 20;
        int c = 30;
        long d = 40;
        float e = 50.;
        double f = 60.0;
        long double g = 70.0;
    
        printf("char            z> 'z'\tindicateur c\t%c\n", z);
        printf("char            a> 10\tindicateur d\t%d\n", a);
        printf("unsigned short  b> 20\tindicateur u\t%u\n", b);
        printf("unsigned short  b> 20\tindicateur o\t%o\n", b);
        printf("unsigned short  b> 20\tindicateur x\t%x\n", b);
        printf("int             c> 30\tindicateur d\t%d\n", c);
        printf("long            d> 40\tindicateur li\t%li\n", d);
        printf("float           e> 50.\tindicateur f\t%f\n", e);
        printf("double          f> 60.0\tindicateur e\t%e\n", f);
        //g = 80.0;
        printf("long double     g> 70.0\tindicateur lg\t%lg\n", g);
        return 0;
    }
    

    résultat:

    char                       z> 'z'      indiccateur c     z
    char                       a> 10     indiccateur d     10
    unsigned short        b> 20     indiccateur u     20
    unsigned short        b> 20     indiccateur o     24
    unsigned short        b> 20     indiccateur x     14
    int                         c> 30      indiccateur d     30
    long                       d> 40     indiccateur li     40
    float                      e> 50.     indiccateur f      50.000000
    double                   f> 60.0    indiccateur e     6.000000e+001
    long double           g> 70.0    indiccateur lg    -6.98351e-251

    merci

    • Partager sur Facebook
    • Partager sur Twitter
      22 juin 2019 à 13:43:32

      Sous MinGW, pour que ça compile il faut mettre dans les options de compilation -D__USE_MINGW_ANSI_STDIO
      • Partager sur Facebook
      • Partager sur Twitter
        22 juin 2019 à 14:20:39

        D'après http://www.cplusplus.com/reference/cstdio/printf/ c'est sensé être %Lg et non %lg

        -
        Edité par potterman28wxcv 22 juin 2019 à 14:20:54

        • Partager sur Facebook
        • Partager sur Twitter
          22 juin 2019 à 15:35:26

          hmm,

          avec code block 17.12 c'est GNU GCC compiler.

          • Partager sur Facebook
          • Partager sur Twitter
            22 juin 2019 à 15:50:53

            Le compilateur fait des fautes d'orthographe : indiccateur au lieu de indicateur ?

            Ou alors, ce que tu montres est le résultat d'une autre version de ton code.

            #include <stdio.h>
            
            int main()
            {
              long double nombre = 123.45;
              
              printf("long double format Lf  = %Lf\n", nombre);	
              return 0;
            }
            


            Résultat

            long double format Lf  = 123.450000
            



             et 123.45 avec %Lg

            -
            Edité par michelbillaud 22 juin 2019 à 15:57:31

            • Partager sur Facebook
            • Partager sur Twitter
              22 juin 2019 à 16:09:18

              merci michel

              mais avec ton code j'ai encore un resultat abèrant -56427943694303848et 251 zéro si j'ai bien compté

              • Partager sur Facebook
              • Partager sur Twitter
                22 juin 2019 à 16:24:19

                Tu compiles avec minGW ?

                alors mets  -D__USE_MINGW_ANSI_STDIO dans les options du compilateur !

                • Partager sur Facebook
                • Partager sur Twitter
                  22 juin 2019 à 22:39:32

                  rouloude

                  non c'est avec code block 17.12 c'est GNU GCC compiler

                  merci

                  je suis obliger de modifier le message c'est un peu lourd cette option:

                  edit 23 06 10:24

                  aud en effet j'ai corriger la faute d'orthographe.

                  "je vais me faire ouspiler par louloude.. mais je ne le ferais plus promis"

                  pour

                  codeblock 17.12

                  dans setting >compiler

                  fenetre :global setting compiler

                  je n'ai pas minGW. il est selectionner GNU GCC compiler

                  onglet : compiler flag

                  faisant réference au C j'ai les choix suivant :

                   - Have gcc follow the 1990 ISO C language standard  (certain GNU extensions that conflict with ISO C90 are

                     disabled)


                   - have gcc follow 1999 iso C langage standard [-std=c99]

                   - have gcc follow 1999 iso C langage standard [-std=c11]

                   - In C mode, this is equivalent to -std=c90, in C++ mode, it is equivalent to -std=c++98

                  si je coche :

                  have gcc follow 1999 iso C langage standard [-std=c99]

                  cela fonctionne j'ai le bon résultat, mais est ce le bon choix?

                  merci

                  -
                  Edité par zirconien 23 juin 2019 à 10:58:51

                  • Partager sur Facebook
                  • Partager sur Twitter
                    23 juin 2019 à 17:03:18

                    Tu compiles sur quel système d'exploitation ?
                    • Partager sur Facebook
                    • Partager sur Twitter
                      23 juin 2019 à 18:09:02

                      windows Se7en Titan 64 bits
                      • Partager sur Facebook
                      • Partager sur Twitter
                        23 juin 2019 à 18:42:37

                        Version pas très catholique !?

                        Autrement, pour ton info personnel, minGW c'est la version windows de GCC.

                        • Partager sur Facebook
                        • Partager sur Twitter
                          23 juin 2019 à 19:39:51

                          zirconien a écrit:

                          have gcc follow 1999 iso C langage standard [-std=c99]

                          cela fonctionne j'ai le bon résultat, mais est ce le bon choix?

                          Non, à moins que tu sois OBLIGÉ (c'est à dire payé !) pour écrire des programmes qui devront tourner dans des environnements restés prisonniers du millénaire précédent (windows 98 ?), tu as intérêt à choisir le dernier standard  dispo (C11, en attendant la disponibilité de C18 aka C17 aka ISO/IEC 9899:2018), qui ressemble davantage à ce que tu pourras rencontrer dans l'avenir.

                          Les nouvelles versions de C ont tendance, plus que d'ajouter des trucs et des machins dans tous les sens (maladie habituelle des premières évolutions d'un langage, voir PHP), à corriger les défauts des précédentes, qui n'en manquent pas.

                          https://en.wikipedia.org/wiki/C18_(C_standard_revision)

                          -
                          Edité par michelbillaud 23 juin 2019 à 19:50:28

                          • Partager sur Facebook
                          • Partager sur Twitter
                            23 juin 2019 à 23:51:52

                            avec le c11 le probleme est résolue merci

                            pour le reste je te fait confiance je suis au debut du chemin..

                            merci

                            • Partager sur Facebook
                            • Partager sur Twitter

                            aff faux de var long double avec code block 17.12

                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                            • Editeur
                            • Markdown