聲明返回int的函數不返回任何內容。這是未定義的行為嗎? [英] A function declared to return int returns nothing. Is this Undefined Behavior?

查看:0
本文介紹了聲明返回int的函數不返回任何內容。這是未定義的行為嗎?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

這是C++中的有效函數:

int f()
{
   if(false)
   {
      return 42;
   }
}

以下定義導致UB:

int x = f(); // return value used

問題: 以下表達式語句是否導致UB?

f();

非常歡迎來自標準的報價。

推薦答案

C++03§6.6.3/2:

流出函數末尾相當于沒有值的返回;這會導致值返回函數中的未定義行為。

所以這是函數本身中的UB。

btw GCC給您一個很好的警告,指向這個UB:

In function 'int f()':
Line 7: warning: control reaches end of non-void function

這篇關于聲明返回int的函數不返回任何內容。這是未定義的行為嗎?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持IT屋!

查看全文
登錄 關閉
掃碼關注1秒登錄
發送“驗證碼”獲取 | 15天全站免登陸
全免费A级毛片免费看无码播放