我一直在做这个测验:https://www.sanfoundry.com/c-quiz-pointers-addresses/
并且不理解为什么将int转换为float会输出0.000000
#include <stdio.h>
int main()
{
int i = 10;
void *p = &i;
printf("%f\n", *(float*)p);
return 0;
}
预期产量:10.000000
实际输出:0.000000
非常感谢您的帮助!
答案 0 :(得分:4)
您不是将int
投射到float
。
您正在尝试 将int*
投射到float*
。
该语言不允许您这样做,因此代码的行为是未定义。基本原理是为支持C的体系结构提供最大的灵活性:它们可能会将float
数据放置到int
数据的不同存储位置。