I wrote following code
typedef union { struct { int8_t a; int16_t b; uint32_t c; }; int8_t my_arr[7]; }x; uint8_t arr[7]; int main( void ) { uint32_t i; x *y; for( i = 0 ; i < 7 ; i++ ) { arr[i] = i + 2 * 5; } y = ( x* )arr; i = y->a; i = y->b; i = y->c; }
End result in Y is: a = 0x0a; b = 0x0d0c c = 0x00100F0E my_arr[0-7] = 0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10;
& array conatisn arr[0-7] = 0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10;
My question is when a= 0x0a , then should be b = 0x0c0b & c = 0x100f0e0d but this is not the case
I am using keil 4.70.0.0, mdk arm
Are you not getting compilation error?
union doesnt have 'a', 'b' or 'c'. union has structure which has these fields. and you are trying to access fields that are not a part of union. y->a