Bonjour à tous,

je ne parviens pas à trouver si c'est un undefined behavior ou non.
Voici le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
 
int main( void )
{
        int tab[2] = {10, 20};
        int i = 1;
        tab[i] = tab[--i];
        printf( "%d, %d\n", tab[0], tab[1] );
        return 0;
}
En compilant avec gcc v4.2.0 : gcc -std=c99, voici la sortie : "10, 10"
En compilant avec xlC v11.01 ou 13.01, voici la sortie : "10, 20"
Le système est IBM Unix AIX.

xlC semble d'abord effectuer la pré-incrémentation puis l'affectation.

Avez-vous des explications sur cette différence ?