The start of each element is aligned with the address of the union itself.
so the individual comparisons in the expression you ask about are true, but the expression as a whole is false unless the union is located at address 0x0001.
The deleted text applied to the following comparisons:
&u.l == &u.i == &u.s == &u.c[0]
The revised version compares distinct pointer types - the pointers should be cast to void pointers.
I was asked to quote the standard - or identify the section of the standard.
C99 - section 6.7.2.1 Structure and union specifiers (paragraph 14):
A pointer to a union object, suitably converted, points to each of its members (or if a member is a bitfield, then to the unit in which it resides), and vice versa.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…