home *** CD-ROM | disk | FTP | other *** search
/ Sams Teach Yourself C in 21 Days (6th Edition) / STYC216E.ISO / mac / Examples / Day11 / union2.c < prev    next >
C/C++ Source or Header  |  2002-05-03  |  1KB  |  54 lines

  1. /* Example of a typical use of a union */
  2.  
  3. #include <stdio.h>
  4.  
  5. #define CHARACTER   'C'
  6. #define INTEGER     'I'
  7. #define FLOAT       'F'
  8.  
  9. struct generic_tag{
  10.     char type;
  11.     union shared_tag {
  12.         char   c;
  13.         int    i;
  14.         float  f;
  15.     } shared;
  16. };
  17.  
  18. void print_function( struct generic_tag generic );
  19.  
  20. int main( void )
  21. {
  22.     struct generic_tag var;
  23.  
  24.     var.type = CHARACTER;
  25.     var.shared.c = '$';
  26.     print_function( var );
  27.  
  28.     var.type = FLOAT;
  29.     var.shared.f = (float) 12345.67890;
  30.     print_function( var );
  31.  
  32.     var.type = 'x';
  33.     var.shared.i = 111;
  34.     print_function( var );
  35.     return 0;
  36. }
  37. void print_function( struct generic_tag generic )
  38. {
  39.     printf("\n\nThe generic value is...");
  40.     switch( generic.type )
  41.     {
  42.         case CHARACTER: printf("%c",  generic.shared.c);
  43.                         break;
  44.         case INTEGER:   printf("%d",  generic.shared.i);
  45.                         break;
  46.         case FLOAT:     printf("%f",  generic.shared.f);
  47.                         break;
  48.         default:        printf("an unknown type: %c\n",
  49.                                 generic.type);
  50.                         break;
  51.     }
  52. }
  53.  
  54.