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 :

[tableau] Ce comportement est-il défini : affectation et incrémentation


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Par défaut [tableau] Ce comportement est-il défini : affectation et incrémentation
    Bonjour,

    Je suis en train de reprendre un code écrit en C, et je suis tombé sur le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    long ma_fontion ()
    {
    /* Variables */
        long *data;
        mon_type_de_pointeur pDataList; 
     
        if (type1=='L')
             data[indx++] = (long)pDataList->value.integer;
     
    /* Fin du code */
     
    }
    Je me demande simplement si le fait de mélanger l'incrémentation de l'indice d'accès au tableau et une affection est un comportement définit ou non. S'il est définit, me confirmez-vous que les opérations sont faites dans l'ordre suivant :
    • Incrémentation de indx
    • Affectation


    En vous remerciant,
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    pas forcément hyper lisible mais parfaitement correct...
    et non c'est affectaction PUIS incrémentation....

  3. #3
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Un comportement définit oui et non:
    • Oui, dans le sens où tu fait bel bien une affectation puis ensuite une incrémentation de indx
    • Non, dans le sens où tu peux parfaitement dépasser la taille du tableau si par la suite tu utilises cet indx pour une autre affectation, à moins que tu testes le nombre d'indice de ton tableau par rapport à la valeur de indx

    A part ca je ne vois pas de problème.
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  4. #4
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Par défaut
    Merci bien pour ces réponses. Je reconnais que le code n'est pas des plus lisibles, mais vu qu'il doit mériter au moins 9 ou 10 sur l'échelle de goret, l'extrait présenté ne me choque pas plus que ca, malheureusement.

    Pour ce qui est du fait qu'on puisse dépasser la taille du tableau, c'ets un point que j'avais déjà remarqué, et qui n'est évidemment pas testé...
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  5. #5
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par gangsoleil
    S'il est définit, me confirmez-vous que les opérations sont faites dans l'ordre suivant :
    • Incrémentation de indx
    • Affectation
    Si tu veux que les opérations soient faites dans cet ordre précis, il faut utiliser dans ce cas
    Ce qui incrémente en premier puis utilise la valeur de indx
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 24/02/2011, 17h10
  2. Réponses: 2
    Dernier message: 14/12/2006, 22h47
  3. Tableau d' images, est-ce que c'est possible ?
    Par awane dans le forum WinDev
    Réponses: 8
    Dernier message: 27/11/2006, 20h10
  4. Réponses: 8
    Dernier message: 11/07/2006, 17h27
  5. [MySQL] Echange de valeurs dont le nombre n'est pas défini
    Par Diafwl dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 31/01/2006, 10h47

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