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 :

doute sur les if imbriqués


Sujet :

C

  1. #1
    Membre du Club
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2004
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2004
    Messages : 58
    Points : 68
    Points
    68
    Par défaut doute sur les if imbriqués
    une simple question de sémantique, soit le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (X = 0 )
          if (y < 0)
          {
            X = 1;
          }
    d'après la norme ANSI , quel que soit le compilateur comment va réagir le programme?

    va-t-il tester X, si celui-ci égal 0 va tester Y puis en fonction de Y exécuter ou non l'instruction

    ou va-t-il tester X si celui-ci est différent de 1, va alors directement mettre X à 1?
    Au paradis, on est assis à la droite de Dieu.
    C'est normal, c'est la place du mort
    - [Pierre Desproges]

  2. #2
    Membre confirmé
    Homme Profil pro
    amateur
    Inscrit en
    Octobre 2007
    Messages
    731
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : amateur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 731
    Points : 460
    Points
    460
    Par défaut
    Citation Envoyé par gigiskhan Voir le message
    une simple question de sémantique, soit le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (X = 0 )
          if (y < 0)
          {
            X = 1;
          }
    d'après la norme ANSI , quel que soit le compilateur comment va réagir le programme?

    va-t-il tester X, si celui-ci égal 0 va tester Y puis en fonction de Y exécuter ou non l'instruction

    ou va-t-il tester X si celui-ci est différent de 1, va alors directement mettre X à 1?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (X == 0 )
          if (y < 0)
          {
            X = 1;
          }
    Si tu fais un test c'est l'opérateur == et non = qui est l'affectation d'une variable à une valeur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    si X vaut 0
       Alors si Y est inférieur à 0
              alors x =1
       Fin si
       Sinon rien
    Fin si
     
    Sinon rien
    Je ne comprends pas vraiment ta question. Il regarde si X vaut 0, Si c'est le cas il regarde si Y est inférieur strictement à 0 sinon rien. Si Y est bien inférieur alors on affecte 1 à X sinon rien.
    UNE REPONSE UTILE : &|| UN PROBLEME RESOLU :

  3. #3
    Membre du Club
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2004
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2004
    Messages : 58
    Points : 68
    Points
    68
    Par défaut
    merci bien,
    ma question était effectivement très mal posée
    si x ==0 alors je teste si la fonctiony() retourne 0.
    Et dans ce cas
    si x !=0 je ne teste pas fonctionyy par contre je vais effectuer l'action qui suit.

    en gros est-ce que:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (X == 0 )
          if (fonctiony() == 0)
          {
            X = 1;
          }
    équivaut à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if (X == 0 )
    {
          if (fonctiony() == 0)
          {
            X = 1;
          }
    }
    ou bien à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if (X == 0 )
    {
         if (fonctiony() == 0)
            X=1
    }
    else
    {
            X = 1;
    }
    Au paradis, on est assis à la droite de Dieu.
    C'est normal, c'est la place du mort
    - [Pierre Desproges]

  4. #4
    Membre confirmé Avatar de Beniou
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    357
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 357
    Points : 515
    Points
    515
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if (X == 0 )
          if (fonctiony() == 0)
          {
            X = 1;
          }
    équivaut à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if (X == 0 )
    {
          if (fonctiony() == 0)
          {
            X = 1;
          }
    }
    Mais bon pour plus de clarté dans le code j'utiliserais la deuxième méthode en mettant toujours les accolades et en n'oubliant pas l'indentation.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    153
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2009
    Messages : 153
    Points : 160
    Points
    160
    Par défaut
    Ou éventuellement, il est courant de voir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    if (X == 0)
    {
        /* du code ici... */
     
        if (fonctiony() == 0)
            X = 1;
     
        /* ... et là aussi */
    }
    Mais si tu n'as que c'est trois "instructions", il est préférable de mettre toutes les accolades comme l'a dit Beniou.

  6. #6
    Membre du Club
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2004
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2004
    Messages : 58
    Points : 68
    Points
    68
    Par défaut
    merci à tous pour ces éclairages
    Au paradis, on est assis à la droite de Dieu.
    C'est normal, c'est la place du mort
    - [Pierre Desproges]

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

Discussions similaires

  1. Doute sur les mean
    Par soeursourire dans le forum MATLAB
    Réponses: 1
    Dernier message: 21/01/2011, 10h48
  2. [1.x] Problème sur les formulaires imbriqués
    Par symfony30000 dans le forum Symfony
    Réponses: 6
    Dernier message: 22/04/2010, 15h05
  3. [1.x] aide sur les formulaires imbriqués
    Par belgacem.tlili dans le forum Symfony
    Réponses: 9
    Dernier message: 16/03/2010, 11h07
  4. Doute sur les expressions régulières
    Par pierrot10 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 15/05/2009, 10h12
  5. [Tableaux] Besoin d'explications sur les tableaux imbriqués
    Par gateaubasque dans le forum Langage
    Réponses: 5
    Dernier message: 23/03/2007, 09h12

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