1

だから私は最初に #define SENTINEL -1

そしてある関数で、if文を設定しました

void blahblah(blah)
{
   printf("Enter an integer (-1 to quit)");
   scanf("%d", &value);
   if (value == SENTINEL)
     return;
}

しかし、何らかの理由で、私が望むようにプログラムを終了していませんか?

4

4 に答える 4

1

return は終了を意味するのではなく、関数から戻ることを意味するだけです....そこのコードでは、 if ステートメントが false の場合、関数はとにかく戻るため、 if ステートメントは役に立ちません。

おそらく、blahbalh から値を返して、終了するように言いたいと思うでしょう。

于 2013-02-11T23:45:08.700 に答える
0

プログラム全体を終了させたい場合は、 に置き換えreturnてくださいexit(0);。また、 のデータ型がvalueisintおよび notであることを確認してくださいunsigned int

于 2013-02-11T23:45:35.773 に答える
0

通常の方法は、リターンを発生させるフラグを設定することです。main() - ただし、exit() を使用して、コードの任意の部分からプログラムをすぐに中止できます。

exit() を使用すると、プログラムはそこで終了し、実行したい終了/クリーンアップ コードが得られないことに注意してください。

もう一度編集して、間違った言語で考えていました! exit() は、EXIT_SUCCESS または EXIT_FAILURE のいずれかのリターンのステータスを示す int パラメータを想定しています。

私の悪い!

于 2013-02-11T23:46:03.043 に答える
0

プログラムが終了する理由はありません。値 == SENTINEL の場合に関数を終了 (リターン) するだけです。

You 関数には 3 つの問題もあります。値 != SENTINEL の場合、未定義の動作である関数を返しません。パラメータ blah に型がありません (int blah) ; その関数が機能するには、値がグローバルである必要があります。

于 2013-02-11T23:48:19.313 に答える