int k = 0; int g() { k = k + 1; return k; }
int D[] = {13, 19, 47, 3, 7};
…..
D[ g() ] = D[ g() ]++ — D[ g() ]++;
According to a book from which this problem comes this code will generate 5 to 6 different results according to different implementations of the C standard semantics...
I have found 2 results based on Visual studio and GCC C compilers: Those are
D={13,20,48,-28,7} Visual studio
D={13,44,48,4,7} GCC
This is obviously due to the order of execution of the assignment operator.
I am not able to determine what 4 other set of values can be obtained using the standard C semantics.
The book gives a hint that it has to do with the assignment operator and one rule in Standard C semantics... it's not related to associativity ..................... This makes it even more confusing