C语言中的IF-ELSE语句快捷方式

C语言中的IF-ELSE语句快捷方式,c,if-statement,shortcut,C,If Statement,Shortcut,C的缩写IF-ELSE语句的语法如下 (integer == 5) ? (TRUE) : (FALSE); 我经常发现自己只需要陈述的一部分(对或错),然后使用这个 (integer == 5) ? (TRUE) : (0); 我只是想知道是否有一种方法可以不包括使用这种速记符号的语句的ELSE部分 运算符?:必须返回一个值。如果没有“else”部分,当布尔表达式为false时,它将返回什么?在其他一些语言中,一个合理的默认值可能是null,但对于C语言可能不是。如果您只需要

C的缩写IF-ELSE语句的语法如下

    (integer == 5) ? (TRUE) : (FALSE);
我经常发现自己只需要陈述的一部分(对或错),然后使用这个

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

我只是想知道是否有一种方法可以不包括使用这种速记符号的语句的ELSE部分

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

问题是我们是否可以在不使用then和else部分的情况下编写以下表达式

如果您只需要零件,则可以使用&&:

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


这在C语言中确实有效,并使用gcc进行编译。
return
语句绝对不能放在表达式中。好的,我只是作为一个例子写的。语法是正确的,我的示例实现是错误的;这不是这个问题的重点。无论如何,谢谢。
?:
不是“一个简写的IF-ELSE语句”-它是一个操作符。这是一个常见的误解。在某些情况下,您可以使用
?:
将if/else替换为表达式,但它是有限的子集。谢谢!这就是我所要求的。我只是想知道是否有一种方法可以不实现这两个部分,如果您所关心的只是当条件以某种方式计算时,否则什么也不做。尽管如此,我认为它在使用此语句的赋值情况下是有意义的。如果案例为false,则不会定义赋值。gcc允许使用某种特殊案例,但它是一个非标准扩展。例如
retval=retval?:描述错误-见@PaulR我记得在什么地方读到过,但我从来没有查过。它似乎没有那么有用。不-它只是比if语句稍微紧凑一点,但我倾向于避免像这样的非标准扩展,因为我的代码需要可移植。对于后一种情况,必须明确的是,不会对“其他情况”进行赋值。在我的例子中,我正在寻找是否可以缩短
int number=0;整数=2;数字=(整数==5)?(然后重置):(保留任何内容)
。但是
number
保持为0。如果作为赋值的正确值嵌入,则必须进行赋值,因此表达式的“其他大小写”计算并赋值为快捷条件的值:1表示| |,0表示&。作为“简写IF-ELSE语句”(OP查询),该值将被丢弃,赋值应为then部分和/或ELSE部分(以存在的为准)的一部分。或者,您可以使用n=(i==5)?0:n,但是为什么不说如果(i==5)n=0;这是好的和短的(短-即使与单字符变量)。
(integer == 5) ? (THENEXPR) : (ELSEEXPR);
(integer == 5) && (THENEXPR)
(integer == 5) || (ELSEEXPR)