下列程序的运行结果是【 】。 #include <stdio.h> main() { union EXAMPLE { struct { int x; int y;} in; int

admin2009-01-15  30

问题 下列程序的运行结果是【  】。
   #include  <stdio.h>
   main()
   {  union EXAMPLE
      {  struct
         { int x; int y;} in;
         int a;
         int b;
      }e;
      e.a=1;e.b=2;
      e.in.x=e.a*e.b;
      e.in.y=e.a+e.b;
      printf("%d,%d\n",e.in.x,e.in.y);
   }

选项

答案4,8

解析 C语言规定,共用体中各个成员变量在内存中占用同一段内存单元,即e.in.x、 e.a、e.b占用同一段内存单元。执行语句e.b=2;后,e.in.x=e.a=e.b=2;执行语句e.in.x= e.a*e.b;时,e.a的值为2,e.b的值为2,所以运算得出e.in.x的值为4;执行语句e.in.y= e.a+e.b时,由于e.in.x和e.a、e.b占用的是同一段内存单元,所以此时的e.a、e.b的值为4,因此运算得出e.in.y的值为4+4=8。程序最后的输出结果为4,8。
转载请注明原文地址:https://jikaoti.com/ti/3HK0FFFM
0

最新回复(0)