簡體   English   中英

C++ 中布爾函數的默認返回值是多少?

[英]What is the default return value of a Boolean function in C++?

如果我不返回某些東西,C++ 中布爾函數的返回值是什么? 如果我只返回一個真值而不是假值,那么返回值是什么? 這是我的代碼:

bool f(int a)
{
//    return value?
}

bool f(int a)
{
    if(a%2) return true;
//    return value here?
}

返回類型是您在函數原型中定義的類型。 請注意,C++ 中的函數沒有默認返回值(特殊函數main除外)。 應該返回值的函數必須在其所有代碼路徑中返回一個值。 否則你會產生未定義的行為。 例如,參見這個在線C++ 工作草案

9.6.3 返回語句

...

從構造函數、析構函數或具有 cv void 返回類型的函數的末尾流出等價於沒有操作數的返回。 否則,從 main (6.8.3.1) 以外的函數的末尾流出會導致未定義的行為。

在程序控制到達沒有顯式return值的分支時調用非void函數( main除外)的行為是未定義的

(請注意,這是一個比 C 中更強的條件,只有當您嘗試使用函數返回值時,行為才未定義。)

在 C++ 中,您可以使用auto來讓編譯器為您計算出返回類型:

auto foo(int n)
{
    if (n >= 0){
        return true;
    } else {
        return false;
    }
}

但是foo的類型在編譯時已知的意義上仍然是靜態的。 這種方法在使用模板時特別有用。 它不是為了讓你對你的類型馬虎。

如果您編寫了一個假設返回某些內容的函數,而您沒有返回任何內容並出錯,那么您就不能這樣做。 所以使用 void 或返回一些東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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