Здравствуйте, я пытаюсь понять, как работают союзы в Си.Я создал число с плавающей точкой с именем 12345678.
Это преобразуется в двоичный код (25 бит): 101111000110000101001110
В объединении, которое я создал с именем temp_union, я создал переменную с плавающей точкой (value2)и целочисленный массив с 4 байтами, называемый value1.
Затем я сохраняю температуру в объединенном значении2.
Когда я отображаю значение1 [0], разве это не должно печатать первые 8 бит числа с плавающей запятой?И значение [1] следующих 8 битов, значение [2] следующих 8 битов и т. Д.
So displaying value1[0] as an integer, would be 78 (01001110)
Displaying value1[1] as an integer, would be 97 (01100001)
Displaying value1[2] as an integer, would be 188 (10111100)
Вместо этого я получаю следующее:
value1[0]: 1262248270
value1[1]: 32766
value1[2]: 0
value1[3]: 0
Мой кодниже:
#include <stdio.h>
int main()
{
float temperature = 12345678;
union union_data_type {
int value1[4];
float value2;
};
union union_data_type temp_union;
temp_union.value2 = temperature;
printf("\n Temperature float value: ");
printf("%f", temp_union.value2);
printf("\n Value 0: ");
printf("%i", temp_union.value1[0]);
printf("\n Value 1: ");
printf("%i", temp_union.value1[1]);
printf("\n Value 2: ");
printf("%i", temp_union.value1[2]);
printf("\n Value 3: ");
printf("%i", temp_union.value1[3]);
}