The Comma operator looks like this:
x = a, b;
It evaluates the expression
a
, discards the result, evaluates
b
and returns it.
So the code for
a
and
b
both get executed, and x is set to the value of
b
.
Your code is just an extension of that: effectively
x = ((a, b) , c);
So it evaluates
a
and
b
, then evaluates
c
and sets
x
to that value.
I.e. Your code is:
int main()
{
int a = 3;
int b = 1;
for(; a>0; a--)
for(; b<3; b++);
printf("%d ", a*b);
return 0;
}