更多“下面程序的输出是_______。typedefunion{longx[2];int y[4];char z[8];}MYTYPE;MYTYPEthem;main() ”相关问题
  • 第1题:

    下面程序的输出是______。 typedef union { long x[2]; int y[4]; char z[8]; }MYTYPE; MYTYPE them; main() { printf("%d\n",sizeof(them));}

    A.32

    B.16

    C.8

    D.24


    正确答案:C
    解析:sizeof(x)是一个标准C函数,它的返回值是x型的数据结构占用的内存字节数。题目中定义了一个共用体,共用体变量在内存中所占的长度等于最长的成员的长度。

  • 第2题:

    以下程序的输出结果是 typedef union{long x[2] int y[4]; char z[8]; } MYTYPE; MYTYPE them; main() { printf("%d\n",sizeof(them));}

    A.32

    B.16

    C.8

    D.24


    正确答案:C
    解析:共用体所占存储空间的大小是所有成员所占存储单元的和;共用体变量所占存储单元的大小是所有成员中占据存储空间最大的成员所占存储空间的大小。本题中字符数组成员z占8个字节的长度,长度最长,所以共用体变量them用sizeof计算长度为8。

  • 第3题:

    【填空题】以下程序输出的结果是 。 typedef union{long x[2];int y[4];char z[8];}MYTYPE; MYTYPE them; void main() { printf(“%dn”,sizeof(them)); }


    float bool

  • 第4题:

    下面程序的输出结果是( )。 typedefunion {long x[1]; int y[4]; char z[10]; }M; M t; main() {printf("%d\n",sizeof(t)); }

    A.32

    B.26

    C.10

    D.4


    正确答案:C
    解析:“联合体”所占用的内存空间为最长的成员所占用的空间。题中联合体的z[10]成员联合体中占空间最长的成员。

  • 第5题:

    有如下程序段#include "stdio.h"typedef union{ long x[2]; int y[4]; char z[8];}atx;typedef struct aa { long x[2]; int y[4]; char z[8];} stx;main(){ printf("union=%d,struct aa=%d\n",sizeof(atx),sizeof(stx));}则程序执行后输出的结果是A.union=8,struct aa=8 B.union=8,struct aa=24C.union=24,struct aa=8 D.union=24,struct aa=24


    正确答案:B
    本题主要考查结构体和联合体所占的存储空间。
    在本题程序中,首先定义了一个联合体,联合体中具有三个成员,它们的类型分别为长整型、整型和字符型。按照C语言的规定,这三种类型的变量所占的存储空间分别为4个字节、2个字节和1个字节。但由于定义的成员都是数组,长整型数组的大小为2,那么需要的总空间为8个字节;整型数组的大小为4,那么需要的总空间为8个字节;字符数组的大小为8,需要的总空间也为8个字节,因此,可以看出三个成员需要的存储空间一样,都为8。根据联合体变量中的所有成员共享存储空间,联合变量的长度等于各成员中最长的长度的特点,我们可知,系统只需为该联合体变量准备8个字节存储空间即可。
    然后,定义了一个结构体,结构体中的成员类型及数组大小与联合体完全一致,即三个成员所需的空间都为8个字节。但是结构体与联合体不一样的是,结构体不能共享空间,一个结构体变量的总长度是各成员长度之和。因此,该结构体所需的存储空间为24个字节。
    综上所述,我们可以知道程序中的联合体和结构体所需要的存储空间分别为8个字节和24个字节。因此,用sizeof运算符计算这两者的存储空间,输出的结果应该为union=8,struct aa=24,本题正确答案选B。