#include <stdio.h>
int main(void) {
struct kouzoutai {
unsigned long int ldata;
struct {
unsigned short int idata1, idata2;
};
} s_data;
union kyoyoutai {
unsigned long int ldata;
struct {
unsigned short int idata1, idata2;
};
} u_data;
unsigned long int data;
unsigned short int d1 = 0x1234, d2 = 0x5678;
puts("符号なし32ビット整数を入力して下さい."); scanf("%lu", &data);
printf("入力値は16進表示で %08x です.%c", data,10);
printf("2つの符号なし16ビット整数にそれぞれ 0x%04x, 0x%04x を代入する.%c", d1, d2,10);
s_data.ldata = data; s_data.idata1 = d1; s_data.idata2 = d2;
printf("符号なし32ビット整数の値は16進数表示で %08x です.%c", s_data.ldata,10);
printf("符号なし16ビット整数の値は16進数表示で %04x です.%c", s_data.idata1,10);
printf("符号なし16ビット整数の値は16進数表示で %04x です.%c", s_data.idata2,10);
u_data.ldata = data; u_data.idata1 = d1; u_data.idata2 = d2;
printf("符号なし32ビット整数の値は16進数表示で %08x です.%c", u_data.ldata,10);
printf("符号なし16ビット整数の値は16進数表示で %04x です.%c", u_data.idata1,10);
printf("符号なし16ビット整数の値は16進数表示で %04x です.%c", u_data.idata2,10);
return 0;
}