【发布时间】:2015-10-13 12:16:46
【问题描述】:
我对 C 语言中的这个主题 pointers 非常陌生。我有一个代码如下。
这段代码的输出是 0.000000 但我不明白为什么会这样?
void foo(float *);
int main()
{
int i=10,*p=&i;
foo(&i);
}
void foo(float *p)
{
printf("%f",*p);
【问题讨论】:
-
可能是未定义的行为?
-
@MikeCAT:没有“可能”。它是未定义的。
-
您不应该将
int*传递给他们期望的float*。 -
在 IEEE754 32 位浮点数中,
0x0000000A代表1.4E-44。尝试使用%g而不是%f。 -
为什么开发人员不断地做明显违法的事情,然后在这里问为什么结果无法解释? “好吧,所以我把车开到了一棵树上,但为什么我骨折了这么多还要住院呢?”