C - 使用char指针打印int值,而不是获得预期的结果

时间:2015-12-02 18:46:49

标签: c pointers memory char integer

我试图理解指针是如何工作的。我创建了一个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;
}

1 个答案:

答案 0 :(得分:0)

  

但为什么255仍然给我-1?即使我正在打印   y

Value -1 255为255时获取y是有道理的。 p指向二进制文件中的11111111字节,*p是签名字符,%d打印有符号值,这就是打印-1的原因。                      - dbush