我写了一段代码来确定我的系统的字节顺序。但是输出让我感到困惑。
...
int a = 0x12345678;
uint8_t c0, c1, c2, c3;
c0 = *( (uint8_t *)&a );
c1 = *( (uint8_t *)&a+1 );
c2 = *( (uint8_t *)&a+2 );
c3 = *( (uint8_t *)&a+3 );
/* Print addresses of all the variables. */
...
输出:
&a : 0xbf9b23f8
&c0: 0xbf9b23fc // &c0 - &a = 4, Why &a != &c0 ?
&c1: 0xbf9b23fd
&c2: 0xbf9b23fe
&c3: 0xbf9b23ff
如果我评论一些陈述,偏移量会有所不同。
...
int a = 0x12345678;
uint8_t c0;
c0 = *( (uint8_t *)&a );
...
输出:
&a : 0xbf893788
&c0: 0xbf89378f // &c0 - &a = 7 ??