web-dev-qa-db-ja.com

CのIF-ELSEステートメントのショートカット

Cには、簡略IF-ELSEステートメントの次の構文があります

    (integer == 5) ? (TRUE) : (FALSE);

声明の一部(TRUEまたはFALSE)のみを必要とすることがよくあり、これを使用します。

    (integer == 5) ? (TRUE) : (0);

この略記法を使用して、ステートメントのELSE部分を含めない方法があるかどうか疑問に思っていましたか?

13
sherrellbc

オペレーター ?:は値を返す必要があります。 「else」部分がない場合、ブール式がfalseのときに何が返されますか?他のいくつかの言語での賢明なデフォルトはnullかもしれませんが、おそらくCではそうではありません。「if」を実行するだけで値を返す必要がない場合は、ifを入力するのはたくさんありますより簡単に。

12
Jeremy

問題は、then部分とelse部分の両方を使用せずに、次の式を何らかの形で記述できるかどうかです。

(integer == 5) ? (THENEXPR) : (ELSEEXPR);

その部分だけが必要な場合は、&&を使用できます。

(integer == 5) && (THENEXPR)

Else部分のみが必要な場合は、||を使用します。

(integer == 5) || (ELSEEXPR)
4