【发布时间】:2015-05-16 14:06:41
【问题描述】:
我正在尝试执行以下操作
int a[8]={1,2,3,4,5,6,7,8};
printf("%f\n", *(float *)a);
printf("%f\n", *((float *)a+1));
printf("%f\n", *((float *)a+2));
printf("%f\n", *((float *)a+3));
printf("%f\n", *((float *)a+4));
printf("%f\n", *((float *)a+5));
printf("%f\n", *((float *)a+6));
printf("%f\n", *((float *)a+7));
我明白了
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
我尝试以这种方式打印元素的原因是,我想将指向数组的 int 指针转换为浮点指针,并将其作为参数传递给另一个只接受 float * 的函数。
这似乎不太好用。有人可以解释为什么这不起作用吗?
int *ptr;
function((float *)ptr);
如果我这样做,函数不会正确读取指针指向的值。只是返回0.0000。
【问题讨论】:
-
你的期望值是多少?
-
你为什么要这样做?
标签: c pointers floating-point int type-conversion