The C Standard states that there is a sequence point at the end of a full expression in an initializer and that
initializer:
assignment-expression
{ initializer-list }
{ initializer-list , }
initializer-list:
initializer
initializer-list , initializer
That would mean, however, that this
int a[2] = { i = 1 , ++i };
ought to be fine. Could someone please explain why, or why not, this is the case?
But this is missing from the C90 standardIf it's missing, means it is undefined.