返回1.0f给了我1065353216

Ada*_*Lee 5 c floating-point

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

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

我的意思是,以下内容:

float Function()
{
    return 1.0f;
}

float value;
value = Function(); 
fprintf(stderr, "Printing 1.0f: %f", value);
Run Code Online (Sandbox Code Playgroud)

显示:

1065353216
Run Code Online (Sandbox Code Playgroud)

但不是:

1.0
Run Code Online (Sandbox Code Playgroud)

unk*_*ulu 15

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

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

例如:

float Function();
float value;
value = Function(); 
fprintf(stderr, "Printing 1.0f: %f", value);
Run Code Online (Sandbox Code Playgroud)

  • 或者您可以使用头文件. (2认同)