【发布时间】:2015-12-15 08:54:52
【问题描述】:
我正在用 C 语言编写一个菜单驱动程序。所以当我调用一个函数时 我试图了解 return 是如何工作的。所以 我写了一个类似的代码
double function_name(parameters){
//some code here
if(condition here)
return (x);
else
return ;
}
int main( void ){
//some code here
double l = function_name(argument);
printf("returns: %.4lf\n", l);
return 0;
}
当代码进入 else 时,它会打印出来
输出:返回:1.#QNB
具体是什么意思?
【问题讨论】:
-
你的函数应该返回一个
double而你没有返回任何东西,所以结果当然是未定义的行为。 (你的编译器至少应该警告你,不是吗?) -
不,我没有收到任何警告和错误 @Paul R
-
(a)
1.#QNB只是1.#QNAN(即“安静”NaN)“四舍五入”到小数点后 4 位 - 不过这几乎无关紧要,因为您的代码正在展示 UB。 (b) 你没有说你正在使用什么编译器,但是gcc -Wall ...会给你上面代码的一堆警告,最值得注意的是:warning: 'return' with no value, in function returning non-void。 -
好的 - 阅读手册或在线帮助,看看你是否能弄清楚如何启用警告 - 它会为你省去很多麻烦。
-
您使用了错误的格式说明符:
lf是在 C99 中添加的(您显然没有使用它,因为在 C99 中省略main的返回类型是一个错误)。%.4f是正确的。
标签: c function return double return-value