Evaluates its left operand, discards the resulting value, and then evaluates its rights operand and result yields the value of its rightmost operand.
int x = 42, y = 42; printf("%i\n", (x *= 2, y)); /* Outputs "42". */
The comma operator introduces a sequence point between its operands.
Note that the comma used in functions calls that separate arguments is NOT the comma operator, rather it's called a separator which is different from the comma operator. Hence, it doesn't have the properties of the comma operator.
printf() call contains both the comma operator and the separator.
printf("%i\n", (x *= 2, y)); /* Outputs "42". */ /* ^ ^ this is a comma operator */ /* this is a separator */
The comma operator is often used in the initialization section as well as in the updating section of a
for loop. For example:
for(k = 1; k < 10; printf("\%d\\n", k), k += 2); /*outputs the odd numbers below 9/* /* outputs sum to first 9 natural numbers */ for(sumk = 1, k = 1; k < 10; k++, sumk += k) printf("\%5d\%5d\\n", k, sumk);