[英]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.