/*
 * An assortment of experiments involving structures.
 */

#include <stdio.h>
/*
typedef struct pair { int x; int y; } pair;

typedef struct point { int x; int y; } point;
*/
typedef struct twoints { int x; int y; } pair, point;

typedef struct whatever { int x; char y; } whatever;

typedef union zebra { int x; int y; } zebra;

typedef union yak { int i; char ch; } yak;

typedef union lemur { int i; struct { char b1,b2,b3,b4; } bytes; } lemur;

main()
{
  point alpha; 
  pair beta; 
  zebra stripes;
  yak bison;
  lemur lex;
  alpha.x = 1;
  alpha.y = 2;
  printf("beta: (%d,%d)\n", beta.x, beta.y);
  beta = alpha;
  printf("beta: (%d,%d)\n", beta.x, beta.y);
  printf("sizeof(whatever) = %d\n", sizeof(whatever));
  printf("sizeof(zebra) = %d\n", sizeof(zebra));
  printf("sizeof(yak) = %d\n", sizeof(yak));
  printf("sizeof(lemur) = %d\n", sizeof(lemur));
  bison.i = 10;
  bison.ch = 'a';
  printf("bison.i: %d\n", bison.i);
  lex.i = 257;
  printf("%d %d %d %d\n", lex.bytes.b1, lex.bytes.b2,
                          lex.bytes.b3, lex.bytes.b4);
  exit(0);
} /* main() */
