1. ホーム
  2. c++

[解決済み] ERROR コントロールが非ボイド関数の末尾に達する可能性があります。

2022-01-29 19:44:24

質問

Control may reach end of non-void function."という警告が表示される理由がわかりません。

以下は私のコードです。

long double geo_fn(long reps, int seed) {
    double x, y, pythag_sum, total = 0, inside = 0;
    default_random_engine engine(seed);             
    uniform_real_distribution<double>dist(0,1);

    for(int i = 0; i< reps ;i++){
        x = dist(engine);
        y = dist(engine);
        pythag_sum = (x*x)+(y*y);
        if (pythag_sum <= 1){
            inside += pythag_sum;
            total += pythag_sum;
        }
        else {
            total += pythag_sum;
         }
     return (inside/total)/10;
     }
}

解決方法は?

第一引数に 0 を指定した場合、ループは決して実行されず return 文に到達することはありません。非終了の立下り void 関数は未定義の動作です。

個人的な推測では return そうすれば、この関数が常に値を返すことが保証され、警告も消えます。