Page 127 - 6437
P. 127

#include <string.h>


                            union Data
                            {
                                int i;

                                float f;

                                char  str[20];
                            };


                            int main( )
                            {

                                union Data data;


                                data.i = 10;
                                data.f = 220.5;

                                strcpy( data.str, "C Programming");


                                printf( "data.i : %d\n", data.i);
                                printf( "data.f : %f\n", data.f);

                                printf( "data.str : %s\n", data.str);


                                return 0;
                            }

                          When the above code is compiled and executed, it produces the following result:

                 data.i : 1917853763

                 data.f : 4122360580327794860452759994368.000000
                 data.str : C Programming


                          Here, we can see that the values of i and f members of union got corrupted because the
                   final value assigned to the variable has occupied the memory location and this is the reason that
                   the value of str member is getting printed very well.
                          Now let's look into the same example once again where we will use one variable at a time
                   which is the main purpose of having unions:



                 #include <stdio.h>

                                                                                                     130
   122   123   124   125   126   127   128   129   130   131   132