summaryrefslogtreecommitdiff
path: root/reference/C/CONTRIB/OR_PRACTICAL_C/11_1.c
diff options
context:
space:
mode:
authorTobias Klauser <tklauser@distanz.ch>2008-01-27 11:37:44 +0100
committerTobias Klauser <tklauser@xenon.tklauser.home>2008-01-27 11:37:44 +0100
commit7e0f021a9aec35fd8e6725e87e3313b101d26f5e (patch)
treeb1cacc4b24393f517aeb4610e9e1021f954307a8 /reference/C/CONTRIB/OR_PRACTICAL_C/11_1.c
Initial import (2.0.2-6)2.0.2-6
Diffstat (limited to 'reference/C/CONTRIB/OR_PRACTICAL_C/11_1.c')
-rw-r--r--reference/C/CONTRIB/OR_PRACTICAL_C/11_1.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/reference/C/CONTRIB/OR_PRACTICAL_C/11_1.c b/reference/C/CONTRIB/OR_PRACTICAL_C/11_1.c
new file mode 100644
index 0000000..cc1ce51
--- /dev/null
+++ b/reference/C/CONTRIB/OR_PRACTICAL_C/11_1.c
@@ -0,0 +1,19 @@
+/*
+ * Define a variable to hold an integer or
+ * a real number (but not both)
+ */
+union value {
+ long int i_value; /* The real number */
+ float f_value; /* The floating-point number */
+} data;
+int i; /* Random integer */
+float f; /* Random floating-point number */
+main()
+{
+ data.f_value = 5.0;
+ data.i_value = 3; /* data.f_value overwritten */
+ i = data.i_value; /* legal */
+ f = data.f_value; /* not legal, will generate unexpected results */
+ data.f_value = 5.5; /* put something in f_value/clobber i_value */
+ i = data.i_value; /* not legal, will generate unexpected results */
+}