There's a clause I was never sure I understood the point of but I think it exists to forbid the following initialization:

int main(void) {
int x = ( (x = 1), 2);
}

In fact the clause is as follows:

No initializer shall attempt to provide a value for an object not contained within the entity being
initialized.

https://cigix.me/c17#6.7.9.p2

And it's not even clear it forbids int x = ( (x = 1), 2);. It may be only about forbidding int t[2] = { ( (t[1] = 1), 2), 3 };, or something else, who knows?

ISO/IEC 9899:2017