有如下程序段#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=24

题目

有如下程序段#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


相似考题
更多“有如下程序段#include "stdio.h"typedef union{ long x[2]; int y[4]; char z[8];}atx;typedef ”相关问题
  • 第1题:

    下列程序的输出结果是( )。 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
    解析:本题主要考查结构体和联合内存使用的区别:结构中不同的成员分别使用不同的内存空间,一个结构所占内存空间的大小是结构中每个成员所占内存空间大小的总和,结构中每个成员相互独立;联合所占用的内存空间为最长的成员所占用的空间。

  • 第2题:

    下列程序的输出结果是()。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
    解析:本题主要考查结构体和联合内存使用的区别:结构中不同的成员分别使用不同的内存空间,一个结构所占内存空间的大小是结构中每个成员所占内存空间大小的总和,结构中每个成员相互独立:联合所占用的内存空间为最长的成员所占用的空间。

  • 第3题:

    假定w、x、y、z、m均为int型变量,有如下程序段: w=1;x=2;y=3;z=4; m=(w<x)?w:x; m=(m<y)?m:y; m=(m<z)?m:z; 则该程序段执行后,m的值是_______.假定w、x、y、z、m均为int型变量,有如下程序段: w=1;x=2;y=3;z=4; m=(w<x)?w:x; m=(m<y)?m:y; m=(m<z)?m:z; 则该程序段执行后,m的值是_______.

    A.4

    B.3

    C.2

    D.1


    1

  • 第4题:

    以下C程序段的输出结果是(30)。 include void prt(int*x,Int*y,int*z){ printf(

    以下C程序段的输出结果是(30)。 #include<stdio.h> void prt(int*x,Int*y,int*z){ printf("%d,%d,%d\n",++*x,++*y,*(z++)); } void main(){ int a=10,b=40,c=20; Prt(&a,&b,&c); Prt(&a,&b,&c); }

    A.11,42,31 12,22,41

    B.11,41,20 12,42,20

    C.11,21,40 11,21,41

    D.11,41,20 12,42,22


    正确答案:B
    解析:C语言不但可以通过传值的方式进行函数调用,还可以通过传递指针的值(变量的地址)来达到修改实参变量值的目的,这是本试题主要说明的问题。其次,应注意表达式*(z++)的值是*z,其后的z++是使指针z指向下一个整数,在程序中无实际作用。函数调用时,由于x、y和z分别指向a、b和c,因此,*x、*y和*z就是a、b和c。第1次调用函数时,*x=a=10,*y=b=40,*z=c=20,输出结果为11,41,20。同时注意到运算符。和++的运算优先级别相同,遵循右结合性。则*z++与*(z++)作用相同,但(*z)++含义不同。(*z)++的含义是c变量值的自增。因此第2次调用函数时,输出结果为12,42,20。

  • 第5题:

    假定w、x,y、z、m均为int型变量,有如下程序段; w=1;x=2;y=3;z=4; m=(w<x)?w:x; m=(m<y)?m:y; m=(m<z)?m:z; 则该程序段执行后,m的值是( )

    A.4

    B.3

    C.2

    D.1


    正确答案:D