强制转换类型
来源:百度知道 编辑:UC知道 时间:2024/05/11 01:19:06
int x;
float *p;
p=(float *)&x;
和
int x;
float *p;
p=(float )&x;
两者有什么区别?请详细回答。
float *p;
p=(float *)&x;
和
int x;
float *p;
p=(float )&x;
两者有什么区别?请详细回答。
后者应该是错误的,编译应该不能通过
首先&x的值是一个地址,肯定是整型数
你的第一种情况(float *),因为p是存放浮点地址的指针变量,所以把整型地址赋给他要强制转换为浮点类型指针,是合理的
第二种情况,把整型地址转换为浮点类型(而不是浮点指针类型),是没有道理的,然后把转换的结果(浮点值)赋值给浮点地址指针变量,明显是不合理的。
&X是地址,也就是说是2004这样的数字,所以不能转换