IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

comprehension printf


Sujet :

C

  1. #1
    Membre confirmé Avatar de semaj_james
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 193
    Par défaut comprehension printf
    Bonjour,

    Je souhaiterais des explications sur ce que fait: printf((n & mask) ? "1" : "0");

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
      void PrintBinaryNumber(unsigned int n)
    {
      unsigned int mask;
      mask = 1 << 4;
     
     while(mask >>= 1)
      {
       printf((n & mask) ? "1" : "0");
       }
    }

  2. #2
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    Il s'agit de l'utilisation de l'opérateur ternaire ?
    Sa syntaxe est :
    (test) ? expr_si_vrai : expr_si_faux.
    ? renvoie expr_si_vrai si le test est vrai (non nul), expr_si_faux si le test est faux (nul).

    Dans ton cas, on teste chaque bit de l'entier n. S'il est égal à 1 (test vrai), on envoie la chaine "1" à printf(), sinon on envoie "0".

    C'est équivalent à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    if(n & mask)
    {
       printf("1");
    }
    else
    {
      printf("0");
    }
    mais en plus obscur pour être sûr que le code ne soit pas facilement maintenable...

  3. #3
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Bonjour,
    Citation Envoyé par DaZumba
    Dans ton cas, on teste chaque bit de l'entier n. S'il est égal à 1 (test vrai), on envoie la chaine "1" à printf(), sinon on envoie "0".
    Quelques explications sur cette méthode très pratique mais pas forcement évidente à comprendre : Combiner plusieurs options en un seul paramètre ?

  4. #4
    Membre confirmé Avatar de semaj_james
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 193
    Par défaut
    Je vous remercie

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. printf avec %g
    Par barthelv dans le forum C
    Réponses: 4
    Dernier message: 15/09/2003, 09h08
  2. printf et LARGE_INTEGER
    Par KORTA dans le forum C
    Réponses: 10
    Dernier message: 05/09/2003, 15h20
  3. les accents et printf
    Par remi77 dans le forum C
    Réponses: 5
    Dernier message: 07/07/2003, 20h53
  4. Réponses: 3
    Dernier message: 04/09/2002, 09h42
  5. fonction printf
    Par ydeleage dans le forum C
    Réponses: 7
    Dernier message: 30/05/2002, 11h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo