代码与little endian有关

时间:2013-08-14 06:13:11

标签: output endianness

假设机器具有小端架构并提供输出

int a[]={0x4142,0x0044,0x4441,0x0044};
      char *b;
      b=(char *)a;
      printf(b);

我无法理解输出。

1 个答案:

答案 0 :(得分:0)

整数通常为4个字节,因此a的第一个值为0x00004142

机器是小端,所以如果你把这个值读成一个字符串,它是:
0x42 (B) 0x41 (A) 0x00 (\0) 0x00

因此打印的字符串为BA

请注意,打印字符串的正确语法是:printf("%s", b);http://en.wikipedia.org/wiki/Uncontrolled_format_string