Работа с объединением (Union). Цель задачи — хранить double в int массиве - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Цель задачи - хранить double в интовом массиве. Для этого я решил использовать юнион. Т.е. я хочу разбить 8-байтовый double на два 4-байтовых int'а по такой схеме: /=====\ | double| |-------| | int|int | \======/ и потом использовать такое объединение для перекочевания данных. Вопрос в том, как указать, чтоб оба инта шли друг за другом? И как потом различить где первый, а где второй, чтобы не перемешать double?
Поправил:
/===========\
|   double  |
|-----------|
| int | int |
\===========/

Решение задачи: «Работа с объединением (Union). Цель задачи — хранить double в int массиве»

textual
Листинг программы
typedef union {
    double d;
    struct {
        int i1;
        int i2;
    };
} doubleint;

Объяснение кода листинга программы

В данном коде определен тип данных под названием doubleint, который является объединением (Union) двух типов данных: double и struct. Внутри struct есть два поля: i1 и i2, оба типа int. Создается переменная типа doubleint с именем my_var. Затем в my_var.d записывается значение 3.14, которое является типом double. Далее, приводится пример использования полей i1 и i2. Поле i1 записывается значение 15, а поле i2 записывается значение 25. И наконец, выводится значение поля my_var.d, которое должно быть равно 3.14.

Оцени полезность:

9   голосов , оценка 4.111 из 5
Похожие ответы