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

时间:2017-12-06 11:13:14

标签: c++

我知道这是一个有点愚蠢的问题,但是我的老师说我们不能在if语句中使用三元运算符,因为它是它的替代品...我的意思是,我自己可以在输入时发现它很愚蠢......

但是,如果我们可以在c ++的if语句中使用三元运算符,那么有人会告诉我吗?

3 个答案:

答案 0 :(得分:3)

是的,你可以。

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

一个例子是变态

if (unemployed ? false : true)

代表

if (!unemployed)

当然,它是否是的事情取决于具体情况。

答案 1 :(得分:3)

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

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

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

答案 2 :(得分:-3)

我知道这个问题很老了。但是,我遇到了另一个最近在我的代码中使用的有用示例:

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

它基本上是关于按元素的成员变量 start 或 end 对列表进行排序。通过在 if 中使用三元运算符,代码变得更小但仍然可读。