/* This is a second example on unions */

#include <stdio.h>
#define AUTO 1
#define BOAT 2
#define PLANE 3
#define SHIP 4

void main()
{
struct automobile {  /* structure for an automobile         */
   int tires;
   int fenders;
   int doors;
};

typedef struct {     /* structure for a boat or ship        */
   int displacement;
   char length;
} BOATDEF;

struct {
   char vehicle;         /* what type of vehicle?           */
   int weight;           /* gross weight of vehicle         */
   union {               /* type-dependent data             */
      struct automobile car;      /* part 1 of the union    */
      BOATDEF boat;               /* part 2 of the union    */
      struct {
         char engines;
         int wingspan;
      } airplane;                 /* part 3 of the union    */
      BOATDEF ship;               /* part 4 of the union    */
   } vehicle_type;
   int value;            /* value of vehicle in dollars     */
   char owner[32];       /* owners name                     */
} ford, sun_fish, piper_cub;   /* three variable structures */

       /* define a few of the fields as an illustration     */

   ford.vehicle = AUTO;
   ford.weight = 2742;              /* with a full gas tank */
   ford.vehicle_type.car.tires = 5;  /* including the spare */
   ford.vehicle_type.car.doors = 2;

   sun_fish.value = 3742;           /* trailer not included */
   sun_fish.vehicle_type.boat.length = 20;

   piper_cub.vehicle = PLANE;
   piper_cub.vehicle_type.airplane.wingspan = 27;

   if (ford.vehicle == AUTO)         /* which it is in this case */
      printf("The ford has %d tires\n",ford.vehicle_type.car.tires);

   if (piper_cub.vehicle == AUTO) /* which it is not in this case */
      printf("The plane has %d tires\n",piper_cub.vehicle_type.
             car.tires);
}
UNION2.C
Κατεβάστε το πρόγραμμα στον υπολογιστή σας