// ==========================================================================
// $Id: union.cpp,v 1.3 2016/09/13 21:51:47 jlang Exp $
// CSI2372 example Code for lecture 2
// ==========================================================================
// (C)opyright:
//
//   Jochen Lang
//   SITE, University of Ottawa
//   800 King Edward Ave.
//   Ottawa, On., K1N 6N5
//   Canada. 
//   http://www.site.uottawa.ca
// 
// Creator: jlang (Jochen Lang)
// Email:   jlang@site.uottawa.ca
// ==========================================================================
// $Log: union.cpp,v $
// Revision 1.3  2016/09/13 21:51:47  jlang
// Added comments improved value
//
// Revision 1.2  2013/09/16 19:45:21  jlang
// Clarified code.
//
// Revision 1.1  2006/09/07 20:06:17  jlang
// Initial check-in lecture 0-2
//
//
// ==========================================================================
#include <iostream>
#include <iomanip>

using std::cout;
using std::endl;


int main()
{
  union ShortChar {
    short num;
    char c;
  };
  
  ShortChar sChar; // all allocated in same memory
  sChar.c = 'a';   // lifetime of char starts	
  sChar.num = sChar.c + 257; // lifetime of short starts and char ends 
  std::cout << sChar.c << std::endl; // illegal access of char
  std::cout << sChar.num << std::endl; 
  return 0;
}
