以下代码的输出为0.0000
。代码中发生了什么以及为什么输出为0.0000
或者在我们输入int*
到float*
并打印取消引用的值>时精确地询问会发生什么?在下面的代码?
int main(){
int i = 10;
int *p = &i;
printf("%f\n", *(float*)p);
return 0;
}
答案 0 :(得分:4)
你的意思是?
printf("%f\n", (float)*p);
编辑:在您澄清问题之后。
如果您尝试将Int*
转换为float*
,则会有未定义的行为。指针是一个地址,而int float以不同的格式存储在内存中。所以你不能施展它。
答案 1 :(得分:1)
指针始终保存内存地址,即16位或32位。你基本上是类型转换Memory address
这是不寻常的行为。
解决问题取决于你想要实现的目标。