0

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

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

我无法理解输出。

4

1 回答 1

0

一个整数通常是 4 个字节,所以第一个值a0x00004142.

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

所以打印出来的字符串是BA.

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

于 2013-08-14T06:37:26.137 回答