簡體   English   中英

控制如何到達這個非void function的結尾?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM