Сегодня утром у меня была дискуссия с коллегой относительно правильности "кодирующего трюка", чтобы обнаружить сущность.
Трюк был:
bool is_big_endian()
{
union
{
int i;
char c[sizeof(int)];
} foo;
foo.i = 1;
return (foo.c[0] == 1);
}
Мне кажется, что это использование union
неверно, поскольку установка одного члена объединения и чтения другого - это не. Но я должен признать, что это просто чувство, и мне не хватает фактических доказательств, чтобы укрепить мою точку зрения.
Правильно ли этот трюк? Кто здесь?