如果不满足条件,要添加到三元运算符的标准行是什么?
例:
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);