[英]How does control reach the end of this non-void function?
int test_ex(int num) {
if (num >= 1000) {
printf("+");
} else {
return num;
}
}
int main(void) {
test_ex(123812);
}
我在这里感到困惑,因为 est_ex 返回一个 int,但是 if/else 子句都返回 int,对吧? 那么这里怎么可能有非int的return呢,我纠结了好久。 我尝试添加一个冗余的 return 0,但这弄乱了我想要的 output。
有什么建议吗?
如果 function “到达”结束括号,它返回。 如果它应该返回一个值,那么行为是未定义的。
更新:仅当使用 function 的返回值时才是未定义的行为:
来自 C99 6.9.1 Function 定义:
如果到达终止 function 的 },并且调用者使用 function 调用的值,则行为未定义。
由于示例中的代码片段不使用返回值,因此不存在未定义的行为。
你错过了如果 num >= 1000 你不返回任何 int 所以,
int test_ex(int num) {
// No matter you should return
if (num >= 1000) {
printf("+");
return num;
} else {
return num;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.