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 :

instruction de test


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2010
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 22
    Par défaut instruction de test
    salut
    j'arrive pas a comprendre comment cette instruction sera traitée par le compilateur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    int a=16 , b=8, c=4;
    c* = !(a%2) ? (a-- , b++) : 1 ;

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 474
    Par défaut
    Citation Envoyé par Débutant_ASM Voir le message
    salut
    j'arrive pas a comprendre comment cette instruction sera traitée par le compilateur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    int a=16 , b=8, c=4;
    c* = !(a%2) ? (a-- , b++) : 1 ;
    C'est un exercice scolaire ?

    « … ? … : … » est un opérateur ternaire. Il s'agit d'une sorte de if-then-else condensé. Si l'expression en première position est vraie (différente de 0), alors l'expression entière prendra la valeur du deuxième terme. Sinon, ce sera celle du troisième.

    Pour le reste, je te laisse chercher volontairement. Fais une proposition justifiée ici. On te dira si c'est bon ou pas, et pourquoi.

  3. #3
    Membre averti
    Inscrit en
    Février 2010
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 22
    Par défaut
    Citation Envoyé par Obsidian Voir le message
    C'est un exercice scolaire ?

    « … ? … : … » est un opérateur ternaire. Il s'agit d'une sorte de if-then-else condensé. Si l'expression en première position est vraie (différente de 0), alors l'expression entière prendra la valeur du deuxième terme. Sinon, ce sera celle du troisième.
    ca je le sais déja ,mais ce que j'ai pas compris c'est (a--,b++)

    voila ce que moi jai fais


    au début en doit faire a-- et b++ donc a prend 15 et b prend 9

    en suite

    !(a%2) donne vrai et aprés ... je bloke

  4. #4
    Membre émérite
    Avatar de Pouet_forever
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 671
    Par défaut
    Essaye de mettre l'expression sous la forme if ... else ... et tu verras que tu trouveras la solution tout seul.

  5. #5
    Membre Expert
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Par défaut
    salut
    déchiffre ces ligne et tu va trouvé la solution :


    Opérateur virgule

    Syntaxe :
    expression : expression1 , expression2

    Sémantique :
    expression1 est évaluée et sa valeur ignorée. expression2 est évaluée et sa valeur est la valeur de l'expression virgule.


    Opérateur conditionnel

    Syntaxe :
    expression : expression1 ? expression2 : expression3


    Sémantique :
    expression1 est évaluée et doit délivrer une valeur de type entier. Si cette valeur est :

    -
    non nulle, expression2 est évaluée et le résultat est la valeur de l'expression conditionnelle.
    -
    nulle, expression3 est évaluée et le résultat est la valeur de l'expression conditionnelle.

  6. #6
    Membre averti
    Inscrit en
    Février 2010
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 22
    Par défaut
    salut
    merci bcp pour vos réponse
    maintenant j'ai testé ce code sur les pointeurs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
      char *p1 = "Bonjour";
      char *p2 = "Bonjour";
     
    printf("%d &p1",p1);
    printf("\n%d &p2",p2);

    mais j'arrive pas a comprendre pourquoi p2 pointe vers la même adresse que p1 malgré que j'ai pas fait p2 = p1 ?

Discussions similaires

  1. Problèmes avec l'instruction TEST
    Par n5Rzn1D9dC dans le forum x86 16-bits
    Réponses: 6
    Dernier message: 15/07/2013, 12h45
  2. Réponses: 3
    Dernier message: 03/02/2011, 17h40
  3. Explication d'une instruction de test
    Par ToTo13 dans le forum C
    Réponses: 8
    Dernier message: 07/02/2007, 17h02
  4. A quoi sert l'instruction test eax,eax ?
    Par microseb dans le forum x86 32-bits / 64-bits
    Réponses: 4
    Dernier message: 25/01/2005, 21h12
  5. test collisions
    Par tatakinawa dans le forum OpenGL
    Réponses: 5
    Dernier message: 08/06/2002, 06h03

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