我不明白Union如何打印数据。
#include<stdio.h>
int main(){
union Values{
int a;
char b;
int c;
};
union Values val;
val.a = 1;
val.b= 2 ;
val.c = 300;
printf("%d,%d,%d",val.a,val.b,val.c);
return 0;
}
我的输出达到300,44,300
答案 0 :(得分:2)
Values
是大小为int
的联合类型,这是其成员的最大大小。
那么考虑int
的大小是4个字节。
+------------+-------------+-------------+-------------+
union Values val = | 1st byte | 2nd byte | 3rd byte | 4th byte |
+------------+-------------+-------------+-------------+
存储时
val.c = 300; //binary 0b100101100
val
将成为
+------------+-------------+-------------+-------------+
val = | 0010 1100 | 0000 0001 | | |
+------------+-------------+-------------+-------------+
访问val.b
时,您将只读取包含0010 1100
的一个字节。
而0010 1100
的十进制等效值为44
。