Is the comma in a variable list a sequence point?
In the following type of code is there a sequence point between each variable construction, or is the result undefined?
int a = 0;
int b = a++, c = a++;
I wasn't able to find in the standard a specific referenc开发者_如何学JAVAe to a sequence point here. Does that mean it is undefined, or just that I failed in my search? The completion of an expression is a sequence point, but does the above initialization also count?
I believe behavior is well-defined because of 8[dcl.decl]/3
Each init-declarator in a declaration is analyzed separately as if it was in a declaration by itself.
Which is even additionally explained in a footnote as
A declaration with several declarators is usually equivalent to the corresponding sequence of declarations each with a single declarator. That is
T D1, D2, ... Dn;
is usually equvalent to
T D1; T D2; ... T Dn;
As you suspect there is a sequence point after each initializer expression, because they're full expressions (1.9/16, 1.9/12).
精彩评论