Is `(i) = 1` illegal in standard C?
To quote n1570 (the last C11 standard draft prior to publication):
6.5.1 Primary expressions (emphasis mine)
5 A parenthesized expression is a primary expression. Its type and value are identical to those of the unparenthesized expression. It is an lvalue, a function designator, or a void expression if the unparenthesized expression is, respectively, an lvalue, a function designator, or a void expression.
i
is an lvalue, so per the above so is (i)
. And to answer your question, the expression (i) = 1
is valid C.