强制转换类型

来源:百度知道 编辑:UC知道 时间:2024/05/11 01:19:06
int x;
float *p;
p=(float *)&x;

int x;
float *p;
p=(float )&x;
两者有什么区别?请详细回答。

后者应该是错误的,编译应该不能通过

首先&x的值是一个地址,肯定是整型数

你的第一种情况(float *),因为p是存放浮点地址的指针变量,所以把整型地址赋给他要强制转换为浮点类型指针,是合理的

第二种情况,把整型地址转换为浮点类型(而不是浮点指针类型),是没有道理的,然后把转换的结果(浮点值)赋值给浮点地址指针变量,明显是不合理的。

&X是地址,也就是说是2004这样的数字,所以不能转换