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 :

Besoin d'aide sur une pré incrémentation d'un tableau


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 13
    Points : 10
    Points
    10
    Par défaut Besoin d'aide sur une pré incrémentation d'un tableau
    Bonjour,

    j'ai un probléme avec la commade suivante:

    j'ai compris que c'est une pré incrémentation d'un tableau nchiffre mais je n'arrive pas à comprendre son fonctionnement. Quelqu'un pourraint dérouler cette commande comme par exemple ++i équivaut à i=i+1 pour que j'en comprenne la signifiaction. Merci par avance pour vos réponses.

  2. #2
    Membre éprouvé Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Points : 1 260
    Points
    1 260
    Par défaut
    nchiffre[c-'0'] est une expression qui renvoie (je suppose) un chiffre.
    ++nchiffre[c-'0'] est une expression qui ajoute 1 à ce chiffre.

    Ce n'est pas très lisible, en tout cas.
    [alkama] quelqu'un est allé voir la guerre des mondes?
    [@Chrisman] j'espère pour spielberg
    --- bashfr.org

  3. #3
    Membre confirmé Avatar de toxcct
    Développeur informatique
    Inscrit en
    Juillet 2006
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 434
    Points : 511
    Points
    511
    Par défaut
    ++nchiffre[c-'0']
    tout est question de priorités d'opérateurs.
    l'opérateur [] est le plus prioritaire, donc sont contenu est évalué en premier.
    c-'0' est d'abord calculé, puis cet index est appliqué au tableau pour obtenir un élément de celui ci, lequel élément sera ensuite preincrémenté.
    besoin de réponses ? demande a un pote

  4. #4
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par *air*
    j'ai un probléme avec la commade suivante:
    Tu m'étonnes...
    (au fait, pas de commandes en C. Des instructions, des fonctions...)
    Horrible.

    Celui qui a écrit ça mérite le miel et les fourmis rouges!

    Je ne suis même pas sûr que le comportement soit défini.
    Pas de Wi-Fi à la maison : CPL

  5. #5
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Tu m'étonnes...
    (au fait, pas de commandes en C. Des instructions, des fonctions...)

    Horrible.

    Celui qui a écrit ça mérite le miel et les fourmis rouges!

    Je ne suis même pas sûr que le comportement soit défini.
    C'est defini. Et il ne faut pas exagerer, tant qu'on n'utilise pas le resultat de l'operateur ++, ca reste tres acceptable pour moi (en admettant bien sur que la precondition isdigit(c) soit verifiee); tellement acceptable que je ne suis pas sur que j'ecrirais une des alternatives.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  6. #6
    Membre éprouvé Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Points : 1 260
    Points
    1 260
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Horrible.

    Celui qui a écrit ça mérite le miel et les fourmis rouges!
    +1
    On est obligé de réfléchir (pas longtemps, mais quand même ) pour savoir ce que ça fait.
    [alkama] quelqu'un est allé voir la guerre des mondes?
    [@Chrisman] j'espère pour spielberg
    --- bashfr.org

  7. #7
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Comment vous écririez la même expression?

    Je comprends tout à fait qu'on évite les opérateurs d'incrémentation dans des expressions complexes où on utilise aussi leur résultat (encore qu'il y a quelques formes idiomatiques qui sont dans ce cas et que je ne me batterais pas pour les banir même c'est plutôt vers quoi je pencherais), mais ici on se retrouve avec une expression qui ne modifie qu'un objet.

    Est-ce que vous banissez aussi f(&tab[c-'0']) ?
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  8. #8
    Membre éprouvé Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Points : 1 260
    Points
    1 260
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet
    Est-ce que vous banissez aussi f(&tab[c-'0']) ?
    là, on n'a pas trop le choix.
    Mais si c'est juste pour incrémenter un élément d'un tableau, sans utiliser directement le résultat, je préfère découper l'expression. C'est plus long, mais plus simple à relire.
    Enfin, après, c'est une question de goût...
    [alkama] quelqu'un est allé voir la guerre des mondes?
    [@Chrisman] j'espère pour spielberg
    --- bashfr.org

  9. #9
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par zooro
    Mais si c'est juste pour incrémenter un élément d'un tableau, sans utiliser directement le résultat, je préfère découper l'expression.
    Là je ne te suis plus. Sans utiliser le résultat, c'est trop compliqué, en l'utilisant, tu admettrais ???
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

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

Discussions similaires

  1. [SQL] Besoin d'aide sur une requête
    Par Angath dans le forum Langage SQL
    Réponses: 2
    Dernier message: 17/01/2006, 16h26
  2. besoin d'aide sur une requette sql
    Par maxidoove dans le forum Langage SQL
    Réponses: 13
    Dernier message: 10/10/2005, 18h42
  3. Besoin d'aide sur une fonction
    Par PrinceMaster77 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/08/2005, 17h40
  4. Réponses: 1
    Dernier message: 03/08/2005, 11h41
  5. Besoin d'aide sur une requête (JOIN + COUNT ?)
    Par PanzerKunst dans le forum Langage SQL
    Réponses: 2
    Dernier message: 01/06/2005, 10h29

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