Ответ 1
Начало каждого элемента выравнивается с адресом самого объединения.
, поэтому индивидуальные сравнения в выражении, о котором вы спрашиваете, являются истинными, но выражение в целом является ложным, если объединение не расположено по адресу 0x0001.
Удаленный текст применяется к следующим сравнениям:
&u.l == &u.i == &u.s == &u.c[0]
В пересмотренной версии сравниваются различные типы указателей - указатели должны быть отброшены в указатели void.
Мне было предложено процитировать стандарт - или определить раздел стандарта.
C99 - раздел 6.7.2.1 Спецификаторы структуры и объединения (пункт 14):
Указатель на объект объединения, соответствующим образом преобразованный, указывает на каждый из его членов (или если элемент является битовым полем, а затем блоку, в котором он находится) и наоборот.