1. We have moved from vBulletin to XenForo and you are viewing the site in the middle of the move. Though the functional aspect of everything is working fine, we are still working on other changes including the new design on Xenforo.
    Dismiss Notice

C standard semantics ambiguity

Discussion in 'C' started by metahuman, Feb 27, 2008.

  1. metahuman

    metahuman New Member

    Feb 8, 2008
    Likes Received:
    Trophy Points:
    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. :embarasse

    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 :nonod:

Share This Page