"Do nothing"在三元运算符的其他部分?



如果不满足条件,要添加到三元运算符的标准行是什么?

例:

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

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

这将做到这一点:

a = a > 10 ? 5 : a;

或者简单地:

if (a > 10) a = 5;

另一种选择:

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

这个的好处是,即使您无法构造一个decltype(a = 0)实例以放入"什么都不做"表达式中,它也可以工作。(无论如何,这对于基元类型无关紧要。

您也可以使用逻辑表达式(尽管可能会混淆(,以防您不想使用 if 语句。

a > 10 && a = 5

你可以做:

a > 10 ? a=5 : 0;

但是,我更喜欢:

if (a > 10) 
a = 5;

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

void do_smth()
{}
bool a = true; // not necessarily 
a && (do_smth(), 0);

相关内容

最新更新