在C语言中,使用以下语法可以快速实现IF-ELSE语句的缩写形式:
(integer == 5) ? (TRUE) : (FALSE);
我经常发现自己只需要语句中的一个部分(TRUE或FALSE),并使用它。 (integer == 5) ? (TRUE) : (0);
我只是想知道是否有一种方法可以使用这种简写标记而不包括ELSE部分?
在C语言中,使用以下语法可以快速实现IF-ELSE语句的缩写形式:
(integer == 5) ? (TRUE) : (FALSE);
我经常发现自己只需要语句中的一个部分(TRUE或FALSE),并使用它。 (integer == 5) ? (TRUE) : (0);
我只是想知道是否有一种方法可以使用这种简写标记而不包括ELSE部分?
运算符?:
必须返回一个值。如果你没有“else”部分,在布尔表达式为false时它会返回什么呢?在其他一些语言中,合理的默认值可能是null,但在C语言中可能不是。如果你只需要执行“if”,而不需要它返回一个值,那么直接使用if
语句就更加简便。
retval = retval ?: desc.error;
- 请参见https://dev59.com/02sz5IYBdhLWcg3wj4kc - Paul R问题在于我们是否可以在不使用 then 和 else 部分的情况下编写以下表达式
如果只需要 "then" 部分,您可以使用 &&:(integer == 5) ? (THENEXPR) : (ELSEEXPR);
如果你只需要else部分,使用||运算符:
(integer == 5) && (THENEXPR)
(integer == 5) || (ELSEEXPR)
int number=0; integer =2; number = (integer == 5) ? ( then reset ) : ( keep whatever )
。但是 number
仍然是0。 - CanO
return
语句绝对不能放在表达式中。 - user149341?:
不是简写的 IF-ELSE 语句,而是一个操作符。参考例如:https://dev59.com/9nbZa4cB1Zd3GeqPGoJm#18638981 - Paul R?:
表达式替换 if/else,但这只是一个有限的子集。 - Paul R