有人可以澄清一下这里发生了什么,这给了我一个 0xffffffa5 与 0xa5 的十六进制值吗?
#define HEXVAL 0xA5
int main(int argc, char *argv[])
{
int numBytes = 3;
char *tmp;
char *pyld;
pyld = malloc(numBytes * sizeof(char));
memset(pyld, 0, sizeof(pyld));
tmp = pyld;
*(tmp) = HEXVAL;
printf("out = %x\n", pyld[0]); // -> ffffffa5
}
我期待“out = a5”而不是所有“out = ffffffa5”。我想将带符号的值添加到 pyld,所以我不想将 pyld 设置为无符号字符。
谢谢!