Рассмотрим следующий союз:
typedef union {
struct { // Anonymous struct
int red;
int green;
int blue;
};
int colorChannels[3];
} Color;
Независимо от системы, этот код компилируется или выполняется, будут ли поля в анонимной структуре всегда совпадать с индексами в colorChannels?
Другими словами, спецификация требует, чтобы адрес памяти myColor.colorChannels[0] был таким же, как адрес myColor.red?
Кроме того, будет ли отличаться ответ, если код был скомпилирован как С++, а не C?
Обратите внимание, что я спрашиваю о конкретном случае, когда каждый элемент в объединении имеет тот же тип/размер (т.е. int в этом случае)