• [^] # Re: En vrac

    Posté par . En réponse au journal Pourquoi empaqueter KDE prend-il du temps ?. Évalué à 4.

    Peu de gens connaissent le standard du C (par ex. C99) sur le bout des doigts, et c'est encore plus vrai pour C++. Cependant, c'est effectivement un piège connu de C/C++: les opérateurs qui ont des effets de bord ne doivent pas être utilisés lorsque la variable qu'ils affectent est présente plusieurs fois dans une expression sans point de séquence pour donner un ordre aux opérations. Dit autrement :

    a[i] = a[i++];
    a[++i] = a[i];
    i = f(i++);
    f(i++,++i);

    ... Et toutes les autres variantes sont des comportements non-spécifiés ou des comportements indéfinis, car il n'y a pas d'ordre d'évaluation claire, et le fait qu'ajouter des parenthèses ait résolu ton problème l'époque est de la pure chance : ton code peut (et va sans doute) casser si tu compiles avec un autre compilateur, ou (possiblement) si tu le recompiles avec une version du compilateur plus récente/plus ancienne.