diff --git a/20151210/unions-1.c b/20151210/unions-1.c
new file mode 100644
index 0000000000000000000000000000000000000000..5e81a69aab7e542146dee2b75f9501c9831e34b2
--- /dev/null
+++ b/20151210/unions-1.c
@@ -0,0 +1,15 @@
+#include <stdio.h>
+
+int main (void)
+{
+  union
+  {
+    int a;
+    char b[4];
+  }
+  foo;
+  printf ("%d %d %d %d\n", foo.b[0], foo.b[1], foo.b[2], foo.b[3]);
+  foo.a = 16777216 + 512 + 42;
+  printf ("%d %d %d %d\n", foo.b[0], foo.b[1], foo.b[2], foo.b[3]);
+  return 0;
+}
diff --git a/20151210/unions-2.c b/20151210/unions-2.c
new file mode 100644
index 0000000000000000000000000000000000000000..ff746a0b8935b08bda9b6af361554c14a10d6f2c
--- /dev/null
+++ b/20151210/unions-2.c
@@ -0,0 +1,15 @@
+#include <stdio.h>
+
+int main (void)
+{
+  union
+  {
+    int a;
+    char c;
+  }
+  foo;
+  printf ("%d\n", foo.c);
+  foo.a = 16777216 + 512 + 42;
+  printf ("%d\n", foo.c);
+  return 0;
+}
diff --git a/20151210/unions-3.c b/20151210/unions-3.c
new file mode 100644
index 0000000000000000000000000000000000000000..5e649d1dc6b0cb03de2a7b9977d0f419f2080616
--- /dev/null
+++ b/20151210/unions-3.c
@@ -0,0 +1,15 @@
+#include <stdio.h>
+
+int main (void)
+{
+  union
+  {
+    int a;
+    char b[4];
+  }
+  foo;
+  printf ("%d %d %d %d\n", foo.b[0], foo.b[1], foo.b[2], foo.b[3]);
+  foo.a = 16777316 + 137 + 46;
+  printf ("%d %d %d %d\n", foo.b[0], foo.b[1], foo.b[2], foo.b[3]);
+  return 0;
+}