Débutant c

bonjour, je voudrais que quelqu'un m'explique le problème que j'ai. Voici mon programme tt simple :

/*afficher les nombres 123 et 123.456 en les alignants à gauche*/

#include<stdio.h>

main()
{
float x;
x=123.456789;
printf("affichons les valeurs et alignons les à gauche \n");
printf("%-8d \n", x); /*j'affiche x avec %d pour avoir seulement 123*/
printf("%-8.3f\n", x); /*j'affiche x avec %f pour avoir les chiffres après la virgule*/
return 0;
}

Le résultat devrait être :
123
123.456

Le résultat que malheureusement j'ai à chaque fois :

0
123456

Merci pour la réponse . ça doit être tellement simple que ça doit en faire rire certains, mais il faut bien commencer un jour ! :-)

Merci !

9 réponses

  1. Merci à tous pour votre aide !
    Y'en a un qui m'a demandé pourquoi aligner à gauche : Parce que c'est l'exercice qui est demandé... je viens de finir le chapitre où on apprend à aligner les nombres.

    Merci et @+
    1. Seulement lorsque l'on cast la porté n'est pas celle d'une variable globale.
      1. Ben à mon avis ça alloue quand même un entier en mémoire alors c'est kifkif.
        1. Non tu ne déclare pas d'autre variable.
          Tu indique seulement au compilateur que la variable x flotante doit etre interpreté comme un entier (mais seulement pour cet endroit précis).
          D'ailleurs, tu peux voir qu'ensuite rien n'a changer (dans le deuxieme printf() ).
          1. #include <stdio.h>
            #include <stdlib.h>

            int main()
            {
            float x;

            x = 123.456789;
            printf("affichons les valeurs et alignons les à gauche \n");
            printf("%3d \n", (int)x);
            printf("%.3f\n", x);
            return EXIT_SUCCESS;
            }

            Ca devrait marcher comme ça.
            1. Salut, merci de ta réponse

              dans le livre, il n'ont pas appris qu'on pouvait mettre int entre (). Cest comme ci tu déclarais une autre variable. Ca equivaut à déclarer une entière et une flottante ?
              1. Pour compléter la reponse de Canard007.

                Tu peux aussi simplement remplacé "%-8d" par "%-8.f".
                Ce qui donne : printf("%-8.f \n", x);

                Par contre j'ai une question : Pourquoi aligné a gauche ??

                Edit : je me suis fait devancer ^^.
                1. Salut.
                  Ecris ça tout simplement
                  printf("%-8.0f\n", x);

                  A++

                  La pensée ne commence qu'avec le doute.
                  ROGER MARTIN DU GARD
                  1. Contributeur
                    Cast ton float c'est ca qui pose probleme:
                    printf("%-8d \n", (int)x
                    );
                    #include<stdio.h> 
                    
                    main() 
                    { 
                    float x; 
                    x=123.456789; 
                    printf("affichons les valeurs et alignons les à gauche \n"); 
                    printf("%-8d \n", (int)x); /*j'affiche x avec %d pour avoir seulement 123*/ 
                    printf("%-8.3f\n", x); /*j'affiche x avec %f pour avoir les chiffres après la virgule*/ 
                    return 0; 
                    } 
                    
                    


                    COIN!