1. ホーム
  2. c

[解決済み] control reaches end of non-void function "とはどういう意味ですか?

2022-02-07 02:02:31

質問

このバイナリサーチのアルゴリズムで、コンパイラのエラーがおかしくなってきました。という警告が出ます。 control reaches end of non-void function . これはどういうことでしょうか?

int binary(int val, int sorted[], int low, int high) {
    int mid = (low+high)/2;

    if(high < low)
        return -1;

    if(val < sorted[mid])
        return binary(val, sorted, low, mid-1);

    else if(val > sorted[mid])
        return binary(val, sorted, mid+1, high);

    else if(val == sorted[mid])
        return mid;
}

解決方法は?

コンパイラはこのコードから、関数が最後に到達してまだ何かを返すかどうかを判断することはできません。これを明確にするために、最後の else if(...) を、ただ else .