假设机器具有小端架构并给出输出
int a[]={0x4142,0x0044,0x4441,0x0044};
char *b;
b=(char *)a;
printf(b);
我无法理解输出。
假设机器具有小端架构并给出输出
int a[]={0x4142,0x0044,0x4441,0x0044};
char *b;
b=(char *)a;
printf(b);
我无法理解输出。
一个整数通常是 4 个字节,所以第一个值a
是0x00004142
.
这台机器是小端的,所以如果你把这个值读成一个字符串,它就是 :
0x42 (B) 0x41 (A) 0x00 (\0) 0x00
。
所以打印出来的字符串是BA
.
小心,打印出你的字符串的正确语法是:printf("%s", b);
(http://en.wikipedia.org/wiki/Uncontrolled_format_string)