Class 为指向对象的指针赋值
这是我的密码 当我将'a'的值传递给256512时,我分别得到257513,但对于1000这样的值,我得到769,对于16128100这样的值,我得到1 首先,我认为这可能与2的幂增加1有关,因为它们的二进制表示形式发生了变化。但是在1000的二进制表示中加1并不能得到769Class 为指向对象的指针赋值,class,pointers,c++14,Class,Pointers,C++14,这是我的密码 当我将'a'的值传递给256512时,我分别得到257513,但对于1000这样的值,我得到769,对于16128100这样的值,我得到1 首先,我认为这可能与2的幂增加1有关,因为它们的二进制表示形式发生了变化。但是在1000的二进制表示中加1并不能得到769 请帮助我理解此代码。*p=1将最后一个字节(char)设置为00000000 1 当您将int类型转换为char时, (int)1000的二进制是(二进制)000000 11111 01000 您正在为最后8位分配(int
请帮助我理解此代码。
*p=1
将最后一个字节(char)设置为00000000 1
当您将int类型转换为char时,
(int)1000的二进制是(二进制)000000 11111 01000
您正在为最后8位分配(int)1
,即769
(二进制)0000001100000001
使用256512
是有效的,因为您更改的最后8位都是零,即(int)256512是(二进制)11111 010100000000
,因此将最后一位设为1将为(二进制)11111 010100000001,即(int)256513
我想(不确定)对于16128100
你会得到1,因为这个整数远远超出int范围,因此没有赋值,并且在创建类对象时,a被设置为0
。因此,将最后一位设置为1将使a=1
class Distance
{
public:
int a;
};
int main()
{
Distance d1; //declaring object
char *p=(char *)&d1;
*p=1;
printf("\n %d ",d1.a);
return 0;
}