Operator comma
must execute many statements and return only the result of the last statement.
So, for c=i=j,++i; : c=i=j is executed, then ++i and after that the result is ++i (but not used).
And for c=(i=j,++i); , in accordance with the priority of the operator, i=j executed and immediately after the execution of ++i , and then the affectation to c result (i=j, ++i) , which is the result of the last operator, i.e. ++i
So, the behavior of the semicolon is actually not the same as the semicolon. You can use it as a replacement, as in c=i=j,++i; .
Personally, I do not recommend using this operator, which generates less readable and less maintainable code.
Garf365
source share