明明printf的是var.x啊,不明白为什么选D

img


.

img

因为union的所有元素共用一段存储空间,在某一个时间内只有一个元素存在,当赋予该联合体任一元素一个值是,这个值就占据了这个联合体的存储空间。之前的值也将不存在。在这段代码里,先进行var.x=97,那么此时在这个联合体内就只有这个值,然后进行var.ch='A'。之前存入的97会被释放掉,只存在'A'。而'A'的ascll码值为65,所以选D

union 这个关键字 表示了var是个联合体。
里面的成员是公用一个地址的,
就是说里面的x和ch它们其实是同一个东西,
var.ch = 'A'的这行其实也会改变var.x的值
'A'的acsii码就是65,所以选D
具体你可以查一下union这个关键字