#include char a; short b; long c; float d; double e; union { char a[4]; short b[2]; long c; } x; main() { // Widening a=5; b=a; c=b; d=c; e=d; printf("1: %d %d %d %f %f\n",a,b,c,d,e); // Narrowing e=1000000000; d=e; c=d; b=c; a=b; printf("2: %d %d %d %f %f\n",a,b,c,d,e); // This could break due to endian issues x.a[0]=5; x.a[1]=0; x.a[2]=0; x.a[3]=0; printf("3: %d %d %d\n",x.a[0],x.b[0],x.c); x.c=1000000000; printf("4: %d %d %d\n",x.a[0],x.b[0],x.c); }