开篇,强制类型转化和取整还是有一定区别的
在结构体大小中,可以强制转化字节大小, #pragma pack(4) 强制转化为4字节
1.只能从数据类型大的向小的转,or 你就会有error。
2.对于强转指针,千万别越界,指针or地址的类型,决定着指针的读写方式。
3.有个奇怪的现象, unsigned char d ,它的范围是0~255,赋值若>255,对d取余。
若小于255,对d取整。
4.演示一下,double 转 int
我为什么举这个栗子,因为double是双精度型,它的位数由3部分组成 :符号位,指数位,尾数位
doule的8字节长度
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
标号(vs中的红色标号) | 1 | 2 | 3 |
位置 | 3~6 | 1~4 | 5~8 |
这里的 printf 的输出也和别的不一样,因为涉及到了内存,double只有8的位置,要么2,3输出,要么1输出。如果2,3在前,则2==3==0:如果1在前,1==0.我觉得是内存覆盖,像union一样。