C++ return:使函數立即結束

2020-07-16 10:04:40
當函數中的最後一個語句已經完成執行時,該函數終止,程式返回到呼叫它的模組,並繼續執行該函數呼叫語句之後的其他語句。但是,也有可能強制一個函數在其最後一個語句執行前返回到被呼叫的位置,這可以通過 return 語句完成。

如下面程式所示,在這個程式中,函數 divide 顯示了 arg1 除以 arg2 的商。但是,如果 arg2 被設定為零,則函數返回到 main 而不執行除法計算。
#include <iostream>
using namespace std;

//Function prototype
void divide(double arg1, double arg2);

int main()
{
    double num1, num2;
    cout << "Enter two numbers and I will divide the firstn";
    cout << "number by the second number: ";
    cin >> num1 >> num2;
    divide(num1, num2);
    return 0;
}

void divide(double arg1, double arg2)
{
    if (arg2 == 0.0)
    {
        cout << "Sorry, I cannot divide by zero. n" ;
        return;
    }
    cout << "The quotient is " << (arg1 / arg2) << endl;
}
程式輸出結果:

Enter two numbers and I will divide the first
number by the second number: 12 0
Sorry, I cannot divide by zero.

程式中,使用者輸入了 12 和 0 這 2 個數位,它們被儲存為變數 num1 和 num2 的雙精度值。在第 13 行中,divide 函數被呼叫,將 12.0 傳入 arg1 形參,並將 0.0 傳入 arg2 形參。在 divide 函數中,第 19 行的 if 語句執行,因為 arg2 等於 0.0,所以第 21 行和第 22 行中的程式碼執行。當第 22 行中的 return 語句執行時,divide 函數立即結束,這意味著第 24 行中的 cout 語句不執行。程式繼續執行 main 函數中的第 14 行。