计算机二级

下面程序的输出结果是_______。 union un { int a[4]; long b; char c[6];} main() { union un u; printf("%d%d",sizeof(u),sizeof(uA) ); }A.82B.88C.188D.182

题目

下面程序的输出结果是_______。 union un { int a[4]; long b; char c[6];} main() { union un u; printf("%d%d",sizeof(u),sizeof(uA) ); }

A.82

B.88

C.188

D.182

如果没有搜索结果,请直接 联系老师 获取答案。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

下列程序的输出结果是()。includemain(){struct st{int y,x,z;};union{long i; int j;

下列程序的输出结果是( )。 #include<stdio.h> main() { struct st { int y,x,z; }; union { long i; int j; char k; }un; printf("%d,%d\n",sizeof(struct st),sizeof(un)); }

A.6,2

B.6,4

C.8,4

D.8,6


正确答案:B
解析: 本题主要考查结构体和联合内存使用的区别:结构中不同的成员分别使用不同的内存空间,一个结构所占内存空间的大小是结构中每个成员所占内存空间大小的总和,结构中每个成员相互独立;联合所占用的内存空间为最长的成员所占用的空间。

第2题:

下列程序的输出结果是( )。 include main() { struct st { int y,x,z; }; union {long

下列程序的输出结果是( )。 #include <stdio.h> main() { struct st { int y,x,z; }; union { long i; int j; char k; } un; printf("%d,%d\n",sizeof(struct st),sizeof(un)); }

A.6, 2

B.6, 4

C.8, 4

D.8, 6


正确答案:B
解析:本题主要考查结构体和联合内存使用的区别:结构中不同的成员分别使用不同的内存空间,一个结构所占内存空间的大小是结构中每个成员所占内存空间大小的总和,结构中每个成员相互独立;联合所占用的内存空间为最长的成员所占用的空间。

第3题:

下列程序的输出结果是( )。 #include "stdio.h" main() { struct st { int y,x,z;}; union {long i;int j; char k;} un; printf("%d,%d\n",sizeo(struct st),sizeof(un)); }

A.6,2

B.6,4

C.8,4

D.8,6


正确答案:B

第4题:

下列程序的输出结果是()。includemain(){ struct st{ int y, x,z;};union{ long i;int

下列程序的输出结果是( )。#include<stdio.h>main(){ struct st { int y, x,z; }; union { long i; int j; char k; }un; printf("%d,%d\n",sizeof(struct st),sizeof(un));}

A.6,2

B.6,4

C.8,4

D.8,6


正确答案:B
解析:本题主要考查结构体和联合内存使用的区别:结构中不同的成员分别使用不同的内存空间,一个结构所占内存空间的大小是结构中每个成员所占内存空间大小的总和,结构中每个成员相互独立:联合所占用的内存空间为最长的成员所占用的空间。

第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。

第6题:

下列程序的输出结果是()。 include main() {stmct st {int y,x,z; }; union {long i; i

下列程序的输出结果是( )。

#include<stdio.h>

main()

{ stmct st

{ int y,x,z;

};

union

{ long i;

int j;

char k;

}un;

printf("%d,%d\n",sizeof(stmct st),sizeof(un));

}

A.6,2

B.6,4

C.8,4

D.8,6


正确答案:B
解析:本题主要考查结构体和联合内存使用的区别:结构中不同的成员分别使用不同的内存空间,一个结构所占内存空间的大小是结构中每个成员所占内存空间大小的总和,结构中每个成员相互独立;联合所占用的内存空间为最长的成员所占用的空间。

第7题:

下列程序的输出结果是______。 main() { union} int a[2]; long k; char c[4]; }un,*sp=&un; sp->a[0]=0x39; sp->a[1]=0x38; printf("%1x\n",sp->k); }

A.3938

B.3839

C.390038

D.380039


正确答案:D
解析:结构体变量un的存储情况如图18-3所示,第一列表示地址,第二列为每个字节的值,可用两位的十六进制数表示,当把这4个字节的内容作为long型数据时,高地址字节的值表示高位,低地址字节的值表示低位。

第8题:

下列程序的输出结果是( )。 #include<stdio.h> main { struct st { int y,x,z; }; union { long i; int j; char k; }un; printf("%d,%d\n",sizeof(struct st),sizeof(un)) }

A.6,2

B.6,4

C.8,4

D.8,6


正确答案:B
本题主要考查结构和联合内存使用的一些区别:结构中每个成员相互独立,一个结构所占内存空间的大小是结构中每个成员所占内存空间大小的总和;联合所占用内存空间是指最长的成员占用的空间。

第9题:

有以下程序:main(){ union{ unsigned int n; unsigned char c; }u1; u1.c='A'; printf("%c\n",u1.n);}执行后输出结果是( )。

A.产生语法错

B.随机值

C.A

D.65


正确答案:C
解析:在定义共用体的同时,定义了—个共用体型变量u1,共占两个字节,有两个成员n和c,两个成员的首地址是相同的。因此给u1.c赋一个“A”,其实就是给无符号整型成员u1.n的低字节赋一个“A”,输出u1.n的时候是以字符型的形式输出,只输出它的低地址的一个字节,因此为“A”。所以,C选项为所选。

第10题:

有以下程序 main() { union{ unsigned int n; unsigned char C; }ul; u1.C='A'; printf("%c\n",u1.n); } 执行后输出结果是

A.产生语法错

B.随机值

C.A

D.65


正确答案:C
解析:在定义共用体的同时,定义了一个共用体型变量u1,共占两个字节,有两个成员n和c,两个成员的首地址是相同的.因此给u1.c赋一个“A”,其实就是给无符号整型成员u1.n的低字节赋一个“A”,输出u1.n的时候是以字符型的形式输出,只输出它的低地址的一个字节,因此为“A”。所以,C选项为所选。