【发布时间】:2016-10-07 17:21:07
【问题描述】:
我有一个类似的功能
int myfun(int *a, int *b)
{
while(some condition)
{
if(condition) return *a + *b;
else
{
some manipulation;
}
}
return -1;
}
当while->if部分遇到第一个return语句时,控制是否转到调用myfun的函数或while循环仍然继续?为什么需要return -1语句?
【问题讨论】:
-
放实际代码,这个问题不清楚...
-
一旦循环中的return语句被命中,函数myfun将立即结束。最后一个 return 是为了防止 if 语句永远不会到达,在这种情况下,
*a+*b永远不会返回,而是必须返回其他东西。 -
-1 当“某些条件”变为假时返回。也许数据已经用完了。 -1 通常用于指示错误。然而,它实际上是 C 中指针的非法值。如果 null 是非错误的,该函数应该设置一个标志,而不是尝试构造一个替代的无效指针。
-
为什么
int*会返回int值?这没有意义。 -
这是 IMO 的一种不好的做法。我建议始终在函数顶部声明您的返回变量。您可以使用默认值设置它(或者不必,但我大部分时间都这样做),然后在满足条件时更改它。顶部的声明将清楚地显示要在代码中跟踪的变量名称(以及这是函数而不是过程)