double是64位长度,8字节
int是32位长度,4字节
p=(int*)&y;的意思是把变量y所占据的8字节的首地址转换成合适的类型然后赋值给p
*p=20;这是说把p的目标,也就是y的8字节里面的低端4个字节(本来全是0)按照整数方式赋值为20(针对以Intel为代表的小头CPU)
需要指出的是这个20的二进制10100所放的位置是y的小数点后面很远的位置,所以从表面上看不出来。
如果要看一下实际效果,可以在*p=20;前后各输出一次y,但是不要默认格式,要保留18位小数那种。
int是32位长度,4字节
p=(int*)&y;的意思是把变量y所占据的8字节的首地址转换成合适的类型然后赋值给p
*p=20;这是说把p的目标,也就是y的8字节里面的低端4个字节(本来全是0)按照整数方式赋值为20(针对以Intel为代表的小头CPU)
需要指出的是这个20的二进制10100所放的位置是y的小数点后面很远的位置,所以从表面上看不出来。
如果要看一下实际效果,可以在*p=20;前后各输出一次y,但是不要默认格式,要保留18位小数那种。
对宇宙最严谨的描述应该就是宇宙其实是不严谨的