为指向对象的指针赋值

时间:2017-05-18 07:21:53

标签: class pointers c++14

   class Distance
   {
        public:
           int a;
   };
   int main()
    {
        Distance d1; //declaring object
        char *p=(char *)&d1;
        *p=1;
        printf("\n %d ",d1.a);
        return 0;
    }

这是我的代码。

当我将'' 的值传递给 256,512 时,我分别得到 257,513 但是对于 1000 这样的值,我得到 769 ,对于 16,128,100 这样的值,我得到 1

首先,我认为由于二进制表示的变化,它可能与2的幂增加1有关。但是在1000韩元的二进制表示中加1会给我769。

请帮我理解这段代码。

1 个答案:

答案 0 :(得分:0)

*p = 1将最后一个字节(char)设置为000000001

当你输入int到char时, (int)1000的二进制文件为(binary)0000001111101000 您为最后8位i分配(int)1(binary)0000001100000001769

使用256512有效,因为您更改的最后8位全部为零,(int)256512 is (binary)111110101000000000因此将最后一位设为1会为您提供(binary)111110101000000001 which is (int)256513

我认为(不确定)你为16,128,100得到1,因为这个整数远远超出了int范围,因此没有分配,并且在创建类对象时将a设置为0。因此将最后一位设置为1会使a = 1