Question
Given the definitions below, which of the follow statements are correct?
union{
A. &second.abc.a == &second.xyz.c
B. &first.abc.a == &second.abc.c
C. &first.xyz.b == &first.abc.c
D. &first.abc.a == &second.xyz.c
E. None of these statements are correct
union{
union{
int a;
int b;
int c;
}abc, xyz;
}first, second;
B. &first.abc.a == &second.abc.c
C. &first.xyz.b == &first.abc.c
D. &first.abc.a == &second.xyz.c
E. None of these statements are correct
Solution
#include <iostream>
using namespace std;
union{
union{
int a;
int b;
int c;
}abc, xyz;
}first, second;
int main()
{
cout << "A. &second.abc.a == &second.xyz.c" << ((&second.abc.a == &second.xyz.c)?"\tTrue":"\tFalse") << endl;
cout << "B. &first.abc.a == &second.abc.c" << ((&first.abc.a == &second.abc.c)?"\tTrue":"\tFalse") << endl;
cout << "C. &first.xyz.b == &first.abc.c" << ((&first.xyz.b == &first.abc.c)?"\tTrue":"\tFalse") << endl;
cout << "D. &first.abc.a == &second.xyz.c" << ((&first.abc.a == &second.xyz.c)?"\tTrue":"\tFalse") << endl;
return 0;
}
Output
A. &second.abc.a == &second.xyz.c True
B. &first.abc.a == &second.abc.c False
C. &first.xyz.b == &first.abc.c
True
D. &first.abc.a == &second.xyz.c False
Answer
A, C