47 lines
986 B
C
47 lines
986 B
C
|
//~ 2. Пример: union.c. Написать typedef для 32-битного типа с названием my_type таким образом,
|
|||
|
//~ чтобы можно было обращаться к байтам(поле с названием byte),
|
|||
|
//~ полусловам(u16), словам (u32) и числам с плавающей запятой (f)
|
|||
|
|
|||
|
#include <stdio.h>
|
|||
|
#include <stdlib.h>
|
|||
|
#include <stdint.h>
|
|||
|
|
|||
|
|
|||
|
//Начало решения
|
|||
|
typedef union
|
|||
|
{
|
|||
|
uint32_t u32;
|
|||
|
uint16_t u16[2];
|
|||
|
uint8_t byte[4];
|
|||
|
float f;
|
|||
|
} my_type;
|
|||
|
//Конец решения
|
|||
|
|
|||
|
|
|||
|
int main()
|
|||
|
{
|
|||
|
my_type var;
|
|||
|
|
|||
|
float f;
|
|||
|
uint16_t u16;
|
|||
|
uint8_t u8;
|
|||
|
uint32_t u32;
|
|||
|
scanf ("%d%ld%lu%f", &u8, &u16, &u32, &f);
|
|||
|
|
|||
|
var.f = f;
|
|||
|
printf("%lu\n", var.u32);
|
|||
|
var.u32 = 0;
|
|||
|
var.byte[2] = u8;
|
|||
|
printf("%lu\n", var.u32);
|
|||
|
var.u32 = 0;
|
|||
|
var.u16[1] = u16;
|
|||
|
printf("%lu\n", var.u32);
|
|||
|
var.u32 = u32;
|
|||
|
printf("%f\n", var.f);
|
|||
|
|
|||
|
return 0;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|