一个C语言指针问题,指针类型强制转换,求高手分析!

2024-11-29 18:39:16
推荐回答(2个)
回答1:

是这样的,c语言中,32-bit系统int和float虽然都占4个字节,
但是他们在内存中的存储方式是不一样的。
int型的3在内存中32-bit 16进制是0x00000003
float型的3在内存中32-bit 16进制是0x40400000

当你把指针v(原本指向int型)强制转换指向float型时,
取值是根据float型方式去取值,所以是以float的内存存储方式解释,
所以pi在内存的值即3以float型解释的话就变成:
1.000 0000 0000 0000 0000 0011e-127.
再取整的话显然是0. 所以输入结果变成了0.

float在内存中的存储方式可以参考:
http://blog.csdn.net/yezhubenyue/article/details/7436624

希望对你有帮助。

回答2:

int *v = π 你这个可以这么赋值么,int类型不能给int *类型赋值