Is &(&i) valid in C?

No, I would not say no. we know the expression try to get an address of

an address of a variable, however, only after compiler time construction, we

could get a value for its address, for this exact time the compiler could not

return recognize the address of a new construct value in Compiler,

So it would print error.