Search code examples
ccomma-operator

Understand comma operator


int main()
{
    int a = (1,2,3);
    int b = (++a, ++a, ++a);
    int c= (b++, b++, b++);
    printf("%d %d %d", a,b,c);
}

I am beginner in programming. I am not getting how does this program shows me output of 6 9 8.


Solution

  • The , used in all the three declarations

    int a = (1,2,3);
    int b = (++a, ++a, ++a);
    int c = (b++, b++, b++);  
    

    are comma operator. It evaluates the first operand1 and discard it, then evaluates the second operand and return its value. Therefore,

    int a = ((1,2), 3);          // a is initialized with 3.
    int b = ((++a, ++a), ++a);   // b is initialized with 4+1+1 = 6. 
                                 // a is 6 by the end of the statement
    int c = ((b++, b++), b++);   // c is initialized with 6+1+1 = 8
                                 // b is 9 by the end of the statement.
    

    1 Order of evaluation is guaranteed from left to right in case of comma operator.