有以下程序#include lt;stdio.hgt;union pw{ int i; char ch[2];}a;main(){ a.ch[0]=13;a.
程序
已帮助 人
有以下程序#include <stdio.h>union pw{ int i; char ch[2];}a;main(){ a.ch[0]=13;a.ch[1]=0; printf("%d\n",a.i);} 程序的输出结果是A.13 B.14C.0 D.20
-
参考答案:A本题主要考查联合体的内容。关于联合体,我们需要注意以下几个特点。(1)联合体不允许做初始化赋值,赋值只能在程序中进行。(2)由于联合体成员共享存储空间的原因,导致一个联合体变量每次只能给一个成员变量赋值,而且联合体中所有成员的首地址相同,即都是变量的地址。(3)联合体的存储空间与其成员变量中所需空间最大的变量保持一致,即联合变量的长度等于各成员中最长的长度。在本题中,程序首先定义了一个联合体和一个该联合体的联合体变量a,在主函数中,分别用两条语句给联合体成员赋值,由于ch是一个数组,它的元素仍按普通数组一样排列。程序要求的输出结果是a.i,由于联合体中所有成员的首地址相同,即a.i与a.ch的首地址相同,而在ch中第一个元素为13,因此,输出a.i的结果就为13。本题正确的答案是A。
