web-dev-qa-db-fra.com

Raccourci de l'instruction IF-ELSE en C

C a la syntaxe suivante pour une instruction IF-ELSE abrégée

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

Je me retrouve souvent à n’exiger qu’une seule partie (VRAI ou FAUX) de la déclaration et

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

Je me demandais simplement s'il y avait un moyen de ne pas inclure la partie ELSE de l'instruction en utilisant cette notation abrégée?

13
sherrellbc

L'opérateur ?: doit renvoyer une valeur. Si vous n'aviez pas la partie "else", que retournerait-elle lorsque l'expression booléenne est fausse? Une valeur par défaut raisonnable dans certaines autres langues peut être nulle, mais probablement pas pour C. Si vous avez juste besoin de faire le "si" et que vous n'en avez pas besoin pour renvoyer une valeur, alors taper if est beaucoup Plus facile.

12
Jeremy

La question est de savoir si nous pouvons en quelque sorte écrire l'expression suivante sans les parties then et else

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

Si vous n'avez besoin que de la pièce, vous pouvez utiliser &&:

(integer == 5) && (THENEXPR)

Si vous n'avez besoin que de la partie else, utilisez ||:

(integer == 5) || (ELSEEXPR)
4
David M W Powers