Да, это правильно.Объединение похоже на структуру, за исключением того, что все члены данных имеют перекрывающееся хранилище, поэтому, если вы записываете поле одного типа, а затем считываете поле другого типа, оно будет интерпретировать биты первого типа как значение второгоtype.
Код выглядит здесь странно, потому что объединение определяется внутри функции.Как правило, можно объявлять объединение в области видимости файла, как если бы он объявлял структуру, но здесь, поскольку цель состоит в манипулировании битами, а не в хранении данных, это делается локально.