我试图理解指针是如何工作的。我创建了一个int
值,并使用char
指针指向它。
当打印char
指针指向的地址的内容时,我没有得到预期的结果。
如果char
指针指向 256 ,我希望该地址的内容返回 0 ,因为(256)10 =(0000000100000000)2 。因为char
指针指向一个字节,所以它将返回前8位为零。
但它返回 -1 。
这是我的代码
#include <stdio.h>
int main()
{
int y = 256;
char *p = (char *)&y;
// returns Value -1
printf("Value %d \n", *p);
return 0;
}
答案 0 :(得分:0)
但为什么255仍然给我-1?即使我正在打印
y
Value -1 255
为255时获取y
是有道理的。 p
指向二进制文件中的11111111
字节,*p
是签名字符,%d
打印有符号值,这就是打印-1的原因。
- dbush