19

C 具有以下简写 IF-ELSE 语句的语法

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

我经常发现自己只需要语句的一部分(真或假)并使用它

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

我只是想知道是否有办法不使用这种速记符号来包含语句的 ELSE 部分?

4

2 回答 2

15

运算符?:必须返回一个值。如果你没有“else”部分,当布尔表达式为假时它会返回什么?在其他一些语言中,合理的默认值可能为 null,但对于 C 语言可能不是。如果您只需要执行“if”并且不需要它来返回值,那么键入if会容易得多。

于 2013-09-05T21:33:34.980 回答
9

问题是我们是否可以在没有 then 和 else 部分的情况下以某种方式编写以下表达式

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

如果您只需要 then 部分,您可以使用 &&:

(integer == 5) && (THENEXPR)

如果您只需要 else 部分,请使用 ||:

(integer == 5) || (ELSEEXPR)
于 2017-10-17T23:26:46.893 回答