"什么都不做"在三元运算符的else部分?

时间:2017-07-08 16:13:12

标签: c++ ternary-operator

添加到三元运算符的标准行是什么,以便在不满足条件时什么都不做?

示例:

int a = 0;
a > 10 ? a = 5 : /*do nothing*/;

使用a似乎可以解决问题,但我想知道是否有更普遍接受的方式。

5 个答案:

答案 0 :(得分:10)

那样做:

a = a > 10 ? 5 : a;

或简单地说:

if (a > 10) a = 5;

答案 1 :(得分:2)

如果不想使用if语句,也可以使用逻辑表达式(尽管可能会令人困惑)。

a > 10 && a = 5

答案 2 :(得分:1)

另一种选择:

a ? void(a = 0) : void();

这个有用的是,即使你不能构造一个decltype(a = 0)的实例来放入'do nothing'表达式,它也能正常工作。 (无论如何,这与原始类型无关。)

答案 3 :(得分:0)

你可以这样做:

a > 10 ? a=5 : 0;

但是,我更愿意:

if (a > 10) 
   a = 5;

答案 4 :(得分:0)

只是为了多样性,但不推荐,因为它非常模棱两可。

void do_smth()
{}

bool a = true; // not necessarily 

a && (do_smth(), 0);