gpt4 book ai didi

c - 在一个文件中定义 C 函数并在另一文件中使用时返回错误值

转载 作者:行者123 更新时间:2023-11-30 18:41:25 25 4
gpt4 key购买 nike

我在 file2.c 中定义了一个函数,假设是 myfun。 myfun 返回一个浮点值。在 file1.c 中我没有这个函数的任何声明。我直接调用 myfun ,没有任何事先声明,并将其返回类型分配给一个整数变量,我们称之为 retValInt 。我把它们编译在一起。当我打印 retValInt 时,它给了我垃圾。为什么它不转换返回值并给出适当的整数?

以下是具体代码:

//file1.c
#include<stdio.h>
int main()
{
int retValInt = myfun(123.456);
printf("The value returned is %d\n",retValInt);
return 0;
}

//------------------------
//file2.c
float myfun(float a)
{
return a;
}

我预计输出是 123,但结果是 446676599。

最佳答案

在编译 main 时,编译器怎么可能知道 myfun 返回一个需要转换为 float int

你问为什么编译器不让代码做一些它不可能知道它需要让代码做的事情。所以答案很明显——编译器无法知道这就是你想要的。事实上,编译器可以合理地假设,如果您希望它这样做,您就会告诉它这样做。因此,有人可能会说,您似乎期望的行为实际上是不正确的并且非常令人困惑。 (你从来没有告诉编译器这样做,所以这样做会很糟糕。)

关于c - 在一个文件中定义 C 函数并在另一文件中使用时返回错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21619129/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com