我无法理解联合如何打印数据。
#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
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
。