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 :

condition dans "if"


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Flaherty Mc Coillean
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Décembre 2007
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 108
    Par défaut condition dans "if"
    Bonjour à tous,

    J'essaye de comprendre un programme en c, et je suis tombé sur une condition dans un 'if' que je n'avais jamais vu et que je ne comprends pas...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (d & e)
    {
    blablabla;
    }
    d et e sont des entiers non signés codés sur 2 octets (casté en unsigned char)

    Que signifie cette condition ?

    Merci d'avance

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    Salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (d & e)
    {
    blablabla;
    }
    est équivalent à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if ( ( d & e ) != 0 )
    {
    blablabla;
    }
    L'opérateur & est l'opérateur "ET" bit à bit.

  3. #3
    Membre confirmé Avatar de Flaherty Mc Coillean
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Décembre 2007
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 108
    Par défaut
    okidoki !

    Merci beaucoup, j'avoue que je ne voie pas trop l'intérêt de cette condition dans le code qui m'intéresse dans la mesure où e est toujours supérieur à zéro...

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    Citation Envoyé par Flaherty Mc Coillean Voir le message
    okidoki !

    Merci beaucoup, j'avoue que je ne voie pas trop l'intérêt de cette condition dans le code qui m'intéresse dans la mesure où e est toujours supérieur à zéro...
    Il ne s'agit pas de l'opérateur "ET" (&&) mais de l'opérateur "ET" bit à bit (&). Cela change tout. Chaque bit des deux nombres est multiplié, l'un avec l'autre. On peut donc avoir deux nombres différents de zéro et avoir un résultat nul.

    Exemple (sur 8 bits) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    00110110
    11001001 "ET" bit à bit (opérateur &)
    =======
    00000000 Résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Table de vérité:
     
    0 ET 0 = 0
    0 ET 1 = 0
    1 ET 0 = 0
    1 ET 1 = 1
    On fait ceci pour chacun des bits des deux nombres:
    Bit 0 du nombre 1 avec bit 0 du nombre 2.
    Bit 1 du nombre 1 avec bit 1 du nombre 2.
    Bit 2 du nombre 1 avec bit 2 du nombre 2.
    etc

  5. #5
    Membre confirmé Avatar de Flaherty Mc Coillean
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Décembre 2007
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 108
    Par défaut
    ah d'accord je comprend mieux maintenant !

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

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