ch3-Union (Size and simple use in C/C++)
Chapter_3 Exercise_3-16 | Exercise_3-17 |
Union TCP1, p. 195-196 (union.c, Union.cpp)
union.c download
// The size and simple use of a union in C
#include <stdio.h> // for printf()
// Declaration similar to a struct or class:
typedef union Packed // type `union Packed' defined in C
{
char i;
short j;
int k;
long l;
float f;
double d; // The union will be the size of a double,
// since that's the largest element
} Packed; // type `Packed' defined in C
// Semicolon ends a union definition, like a struct definition
void printUnion(union Packed);
void printUnion(Packed);
int main()
{
printf("sizeof(Packed) = %lu\n", sizeof(union Packed)); // sizeof(Packed)
printf("sizeof(double) = %lu\n", sizeof(double));
union Packed x; // Packed x;
printUnion(x);
x.i = 'c'; // ASCII 99
printUnion(x);
x.d = 3.14159;
printUnion(x);
return 0;
}
void printUnion(Packed p)
{
printf("i = %c (%d), j = %d, k = %d, l = %ld, f = %g, d = %g\n",
p.i, p.i, p.j, p.k, p.l, p.f, p.d);
}
/*
gcc union.c -o union
./union
sizeof(Packed) = 8
sizeof(double) = 8
i = (0), j = 0, k = 0, l = 0, f = 0, d = 0
i = c (99), j = 99, k = 99, l = 99, f = 1.38729e-43, d = 4.89125e-322
i = n (110), j = -31122, k = -266631570, l = 4614256650576692846, f = -1.92531e+29, d = 3.14159
*/
Union.cpp download
// The size and simple use of a union in C++
#include <iostream>
using std::cout;
using std::endl;
// Declaration similar to a struct or class:
union Packed // types `union Packed', `Packed' defined in C++
{
char i;
short j;
int k;
long l;
float f;
double d; // The union will be the size of a double,
// since that's the largest element
}; // Semicolon ends a union, like a struct
void printUnion(union Packed);
void printUnion(Packed);
int main()
{
cout << "sizeof(Packed) = " << sizeof(union Packed) << endl; // sizeof(Packed)
printf("sizeof(double) = %lu\n", sizeof(double));
union Packed x; // Packed x;
printUnion(x);
x.i = 'c';
printUnion(x);
x.d = 3.14159;
printUnion(x);
return 0;
}
void printUnion(Packed p)
{
cout << "i = " << p.i << ", j = " << p.j << ", k = " << p.k
<< ", l = " << p.l << ", f = " << p.f << ", d = " << p.d << endl;
}
/*
g++ Union.cpp -o Union
./Union
sizeof(Packed) = 8
sizeof(double) = 8
i = p, j = 4464, k = -813231760, l = 140728085188976, f = -4.53213e+09, d = 6.95289e-310
i = c, j = 4451, k = -813231773, l = 140728085188963, f = -4.53213e+09, d = 6.95289e-310
i = n, j = -31122, k = -266631570, l = 4614256650576692846, f = -1.92531e+29, d = 3.14159
*/
Chapter_3 Exercise_3-16 | BACK_TO_TOP | Exercise_3-17 |
Comments
Post a Comment