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 :

Problème de compréhension d'un programme C


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Inscrit en
    Avril 2004
    Messages
    646
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 646
    Par défaut Problème de compréhension d'un programme C
    Salut,

    Voilà, je suis entrain de tenter de comprendre un programme écrit en C, et je bute sur l'instruction suivante :

    sachant que q est un entier.

    ou celle-ci qui est de la même veine :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for (jj=0;((jj < size[ii] && (!test); jj++)
    Que veut dire (!test) ? <> de ?

    Merci par avance si vous pouvez m'éclairer.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 79
    Par défaut
    la première est si i est different de q {alors}

    et la seconde c'est une boucle for où jj = 0 premierement on lui ajoute 1 à chaque "passe" et cela temps qu'il re specte la condition
    ((jj < size[ii] && (!test) qi signifit que jj ne doit pas depassé la "cellule" nommé ii du tableau size[] et tant que jj n'est pas different de test

    mais tu ne peut pas poster le code entier??

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Porteuris Voir le message
    la première est si i est différent de q {alors}
    Pas vraiment non, je crois que tu as mal lu.... Le ! est l'opérateur de négation logique. Donc
    équivaut à
    (soit nul)
    Dernière modification par Invité ; 28/01/2009 à 16h30. Motif: je corrige ma boulette

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 480
    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 480
    Par défaut
    Citation Envoyé par kuzco Voir le message
    Pas vraiment non, je crois que tu as mal lu.... Le ! est l'opérateur de négation logique. Donc
    équivaut à
    q différent de 0 (soit non nul)
    Absolument pas ! Relis-toi !

    if() et l'opérateur « ! » (not) attendent tous les deux un booléen. L'expression qui leur est associée sera donc d'abord convertie en booléen. Donc, un entier vaudra false s'il contient 0 et true si sa valeur n'est pas nulle. L'opérateur NOT n'est donc vrai que si son expression associée est fausse et vice-versa.

    Et ça se tient complètement, même au niveau sémantique : on peut dire que « q » existe ou pas (en tant que scalaire par exemple) si sa valeur est significative ou si elle est nulle (bon, c'est le mauvais exemple. La variable q existe toujours en C même si son contenu est nul). Dans le même esprit, on peut faire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    if (DetecteurFumeeSonne())
    {
        incendie = 1;
    }
    else
    {
        incendie = 0;
    }
    
    /* En cas d'incendie */
    if (incendie) 
    {
        Paniquer();
    }
    
    /* En cas de non-incendie */
    if (!incendie)
    {
        ResterVigilant();
    }

  5. #5
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Citation Envoyé par kuzco Voir le message
    Pas vraiment non, je crois que tu as mal lu.... Le ! est l'opérateur de négation logique. Donc
    équivaut à
    q différent de 0 (soit non nul)
    TU SORS!

    q équivaut à q!=0,
    donc !q équivaut à q==0.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Invité
    Invité(e)
    Par défaut


    Oui bon, y'avait un ! de trop .... ça arrive...

    if (!q) signifie si q est nul

  7. #7
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Bao,
    Citation Envoyé par Porteuris Voir le message
    la première est si i est different de q {alors}

    et la seconde c'est une boucle for où jj = 0 premierement on lui ajoute 1 à chaque "passe" et cela temps qu'il re specte la condition
    ((jj < size[ii] && (!test) qi signifit que jj ne doit pas depassé la "cellule" nommé ii du tableau size[] et tant que jj n'est pas different de test

    mais tu ne peut pas poster le code entier??
    Aïe !

  8. #8
    Membre éprouvé Avatar de krieg
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 75
    Par défaut
    Citation Envoyé par Porteuris Voir le message
    la première est si i est different de q {alors}

    et la seconde c'est une boucle for où jj = 0 premierement on lui ajoute 1 à chaque "passe" et cela temps qu'il re specte la condition
    ((jj < size[ii] && (!test) qi signifit que jj ne doit pas depassé la "cellule" nommé ii du tableau size[] et tant que jj n'est pas different de test

    mais tu ne peut pas poster le code entier??
    Salut, je ne veux pas en ajouter mais (jj < size[ii] && (!test)) est une expression booléenne jj < size[ii] aussi et (!test) aussi.
    Tous ça pour dire que on test si jj n'a pas dépassé size[ii](qui est une valeur) et que test est faux.
    bye

Discussions similaires

  1. Problème installation SQL Server 2000 (programme antérieur)
    Par 404Found dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 25/04/2005, 10h24
  2. Réponses: 5
    Dernier message: 11/04/2005, 10h21
  3. [C#] Problème de compréhension de System.Convert ET Provider
    Par papouAlain dans le forum Windows Forms
    Réponses: 5
    Dernier message: 18/11/2004, 21h52
  4. onclipevent (problème de compréhension)
    Par stephane eyskens dans le forum Flash
    Réponses: 8
    Dernier message: 24/09/2003, 15h09
  5. Problème de compréhension des ensembles
    Par Cornell dans le forum Langage
    Réponses: 6
    Dernier message: 07/02/2003, 22h07

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