【发布时间】:2011-03-31 13:50:28
【问题描述】:
我有一个这样的数组:
unsigned char array[] = {'\xc0', '\x3f', '\x0e', '\x54', '\xe5', '\x20'};
unsigned char array2[6];
当我使用 memcpy 时:
memcpy(array2, array, 6);
并打印它们:
printf("%x %x %x %x %x %x", array[0], // ... etc
printf("%x %x %x %x %x %x", array2[0], // ... etc
一个打印如下:
c0 3f e 54 e5 20
但另一个打印出来
ffffffc0 3f e 54 ffffffe5 20
发生了什么?
【问题讨论】:
-
你能仔细检查
array2的定义吗? -
它似乎将 array2 视为有符号整数而不是无符号字符。
-
我也刚刚检查过,如果我做 array2[0] = array[0] 等,它会做同样的事情。
-
只是无法确认您所看到的内容。
-
你用的是什么编译器?与 gcc4.2 两行给出相同的输出