0

次のコードがあるとします。

int func(char str[], int len) {
    // Don't return anything here.
}

int main() {
    char str[] = "Hello";
    int result = func(str, strlen(str));
    printf("%d\n", result);
}

私のコンピューターでは、文字列値 -1679929632 が出力されます。そして、実行すると時々変化します。

なぜこれが起こるのか誰でも説明できますか?

4

1 に答える 1

5

関数定義に return ステートメントがない場合、呼び出された関数の最後のステートメントが実行された後、制御は自動的に呼び出し元の関数に戻ります。この場合、呼び出された関数の戻り値はundefinedです。戻り値が必要ない場合は、戻り値の型が void になるように関数を宣言します。それ以外の場合、デフォルトの戻り型は int です。

上記のように未定義であるため、戻り値としてランダムな値の背後にある根本原因を見つけることは役に立ちません。

于 2015-01-21T05:13:38.203 に答える