添加到三元运算符的标准行是什么,以便在不满足条件时什么都不做?
示例:
int a = 0;
a > 10 ? a = 5 : /*do nothing*/;
使用a
似乎可以解决问题,但我想知道是否有更普遍接受的方式。
答案 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);