Hello I am the following piece of code that I am testing and cannot understand the output I'm getting:
Code:
#include<stdio.h>
//taken out of library I'm using to test my code
typedef struct
{
unsigned int id;
struct {
unsigned char rtr;
unsigned char ide;
unsigned char length
} header;
unsigned char data[8];
} tCAN;
//--------------------------------
union{
tCAN msg;
struct{
unsigned int dummy1;
unsigned char dummy2;
unsigned char dummy3;
unsigned char dummy4;
unsigned int tstamp;
unsigned int sData;
};
}in;
int main() {
char i;
for(i=0;i<8;++i){
in.msg.data[i]=i+1;
}
for(i=0;i<8;++i){
printf("data%i: 0x%02x\n",i,in.msg.data[i]);
}
printf("\n");
in.tstamp=0x12345678;
in.sData=0xabcd;
for(i=0;i<8;++i){
printf("data%i: 0x%02x\n",i,in.msg.data[i]);
}
}
what I am getting is this:
data0: 0x01
data1: 0x02
data2: 0x03
data3: 0x04 //this is as expected.
data4: 0x05
data5: 0x06
data6: 0x07
data7: 0x08
data0: 0x01 //why is data0 0x01
data1: 0x78
data2: 0x56
data3: 0x34
data4: 0x12
data5: 0xcd
data6: 0xab
data7: 0x00
expected output (maybe I'm wrong here):
data0: 0x78
data1: 0x56
data2: 0x34
data3: 0x12
data4: 0xcd
data5: 0xab
data6: 0x00
data7: 0x00
Anybody can suggest why I'm getting this output?