请解释以下运算的过程2

来源:百度知道 编辑:UC知道 时间:2024/06/08 01:38:19
1
struct mydata{int a;float b;char c[3]};mydata x={10,1.0f,"ab;),*y=&x;
x.c[1]++,(y->b)+=10+x.a++;

2
union myunion{char x[2];int y;};
myunion mykey,*pkey=&mykey;
pkey->y=0,pkey->x[0]='1';

3
int a=-1;double b(4);
(a<<2)*sizeof(b)

1.
struct mydata{int a;float b;char c[3]};//定义了mydata结构类型
mydata x={10,1.0f,"ab;)//定义了mydata类型的变量x
,*y=&x;//定义了mydata指针类型的变量y,并让y指向x
x.c[1]++;//x的c成员的第2个元素加1,即变成"ac"
(y->b)+=10+x.a++;//x的b成员的值加上10+x.a,然后x.a加1

2.
union myunion{char x[2];int y;};//定义联合类型myunion
myunion mykey,*pkey=&mykey;//定义myunion类型变量mykey,以及指针pkey,pkey指向mykey
pkey->y=0, //将y成员赋值0
pkey->x[0]='1'; //将x成员的第一个元素赋值'1',注意此时y的低字节也变成了 '1'的ASCII码值

3.
int a=-1;//定义整型变量a,初始化为-1
double b(4);//定义双精度浮点变量b,初始化为4
(a<<2)*sizeof(b) //将a的值左位移2位后,与b变量的大小值相乘