返回1.0f给了我1065353216

时间:2011-07-25 23:28:57

标签: c floating-point

我有一个返回类型float的C函数。

当函数返回1.0f时,接收者会看到1065353216,而不是1.0

我的意思是,以下内容:

float Function()
{
    return 1.0f;
}

float value;
value = Function(); 
fprintf(stderr, "Printing 1.0f: %f", value);

显示器:

1065353216

但不是:

1.0

3 个答案:

答案 0 :(得分:15)

您在一个源文件中定义您的函数,并从另一个不提供签名的文件中调用它,使编译器认为签名为int Function(),这会导致奇怪的结果。

您应该在float Function();所在的文件中添加签名:printf

例如:

float Function();
float value;
value = Function(); 
fprintf(stderr, "Printing 1.0f: %f", value);

答案 1 :(得分:4)

仔细检查您的工作,因为您的实施是正确的。

证据:http://codepad.org/QlHLEXPl

答案 2 :(得分:0)

轮到我猜问题了:

你要么:

  • 编辑源代码而不保存
  • 编辑一个文件但编译并运行另一个文件
  • 编辑和编译一个文件但运行另一个文件
  • 做一些更复杂但更相似的事情:)