If I have the code:
uint64_t a = 0x1111222233334444;
uint32_t b = 0;
b = a;
printf("a is %llx ",a);
printf("b is %x ",b);
and the output is :
a is 1111222233334444 b is 33334444
Questions :
-
Will the behavior be same on big-endian machine?
-
If I assign a’s value in b or do a typecast will the result be same in big endian?
The code you have there will work the same way. This is because the behavior of downcasting is defined by the C standard.
However, if you did this:
Then it will be endian-dependent.
EDIT:
Little Endian: b is 89abcdef
Big Endian : b is 01234567