我们可以在if语句中使用三元运算符

Can we use ternary operator within an if statement?

本文关键字:运算符 三元 if 语句 我们      更新时间:2023-10-16

我的老师说我们不能在if语句中使用三元运营商,因为这是替代方案...任何人都可以告诉我,我们是否可以在if语句中使用三元运营商在C ?

基本答案是:是的,你可以。
正如@bathsheba已经指出的那样:这可能并不总是有意义的。

一个更明智的例子可能是这样的:

if (use_locking ? readLocked() : readUnlocked())
{
   ...
}

是的,你可以。

三元条件运算符是表达式,从最后两个参数的类型推断出类型。和表达式可以用作if语句中的条件。

一个例子是变态

if (unemployed ? false : true)

站在

if (!unemployed)

自然,是否是良好要做的事情取决于上下文。

我知道这个问题是旧的。但是我来了我最近在代码中使用的另一个有用的示例:

if ( by_start ? (tmp_segment1->start > tmp_segment2->start) : 
                (tmp_segment1->end > tmp_segment2->end) )
{
   ...
}

基本上是关于按元素的成员变量启动或结束对列表进行排序。如果代码变小,则使用三元运算符,但仍然可以读取。