だから私は最初に #define SENTINEL -1
そしてある関数で、if文を設定しました
void blahblah(blah)
{
printf("Enter an integer (-1 to quit)");
scanf("%d", &value);
if (value == SENTINEL)
return;
}
しかし、何らかの理由で、私が望むようにプログラムを終了していませんか?
return は終了を意味するのではなく、関数から戻ることを意味するだけです....そこのコードでは、 if ステートメントが false の場合、関数はとにかく戻るため、 if ステートメントは役に立ちません。
おそらく、blahbalh から値を返して、終了するように言いたいと思うでしょう。
プログラム全体を終了させたい場合は、 に置き換えreturn
てくださいexit(0);
。また、 のデータ型がvalue
isint
および notであることを確認してくださいunsigned int
。
通常の方法は、リターンを発生させるフラグを設定することです。main() - ただし、exit() を使用して、コードの任意の部分からプログラムをすぐに中止できます。
exit() を使用すると、プログラムはそこで終了し、実行したい終了/クリーンアップ コードが得られないことに注意してください。
もう一度編集して、間違った言語で考えていました! exit() は、EXIT_SUCCESS または EXIT_FAILURE のいずれかのリターンのステータスを示す int パラメータを想定しています。
私の悪い!
プログラムが終了する理由はありません。値 == SENTINEL の場合に関数を終了 (リターン) するだけです。
You 関数には 3 つの問題もあります。値 != SENTINEL の場合、未定義の動作である関数を返しません。パラメータ blah に型がありません (int blah) ; その関数が機能するには、値がグローバルである必要があります。